2017-07-29 10 views
0

SQLはsql_mode = ONLY_FULL_GROUP_BYにいくつかの問題を持っています このSQLを書き直す方法は?mysqlのsql_mode = ONLY_FULL_GROUP_BYの集約されていない列

SELECT 
    s.id, 
    s.users_id, 
    COUNT(*) as attempt, 
    s.time 
    s.language, 
    s.is_public, 
    u.name, 
    u.nick 
FROM 
    s 
INNER JOIN users u ON u.id = s.users_id 
WHERE s.sid = 10 AND s.result = 1 
GROUP BY s.users_id 
ORDER BY s.time 

答えて

0

2つの問題。あなたは​​を使用している場合

SELECT 
    s.id, 
    s.users_id, 
    COUNT(*) as attempt, 
    s.time, 
    s.language, 
    s.is_public, 
    u.name, 
    u.nick 
FROM 
    s 
INNER JOIN users u ON u.id = s.users_id 
WHERE s.sid = 10 AND s.result = 1 
GROUP BY s.id, 
    s.users_id, 
    s.time, 
    s.language, 
    s.is_public, 
    u.name, 
    u.nick 
ORDER BY s.time 
+0

、ありがとう! – xaero

0

たりすることができます上:一つは、その設定で、あなたがして、グループ内のすべての非サマリー列を含める必要があり、列リストにカンマが欠落している、と二つのですこの

SET sql_mode=(SELECT REPLACE(@@sql_mode,'ONLY_FULL_GROUP_BY','')); 
0

を試してみてください、私はあなたが欲しいと思われる:それだ

SELECT u.id, u.name, u.nick, COUNT(*) as attempt, 
     MIN(s.time) as time -- maybe you want MAX() 
FROM s INNER JOIN 
    users u 
    ON u.id = s.users_id 
WHERE s.sid = 10 AND s.result = 1 
GROUP BY u.id 
ORDER BY MIN(s.time); 
関連する問題