2017-07-29 56 views
0

SQL得到了一些問題sql_mode = ONLY_FULL_GROUP_BY 如何重寫這個SQL?非聚合sql_mode = ONLY_FULL_GROUP_BY的mysql列

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

兩個問題。一,你錯過了在列列表中一個逗號,二,與設置,必須由包括您的組中的所有非彙總列:如果您正在使用​​

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); 
相關問題