2016-11-25 6 views
0

MYSQL 5.7を使用しています。私は別のdevice_idと最近の行を取得したい。私は、これらのクエリを試みた:ERROR 1055(42000):SELECTリストの式#1がGROUP BY句にありません...これはsql_mode = only_full_group_byと互換性がありません

クエリ1

SELECT `table`.`id`, `table`.`device_id` FROM `table` WHERE (id IN (SELECT id FROM (SELECT * FROM table ORDER BY date_modified DESC) AS last_modified GROUP BY device_id) and device_id <> ''); 

+----+------------------+ 
| id | device_id  | 
+----+------------------+ 
| 5 | ffcecafe5eed4fba | 
| 6 | ffcecafe5eed4fba | 
| 8 | 71085f00e527bae0 | 
+----+------------------+ 
3 rows in set (0.00 sec) 

をしかし、それは重複を削除していません。 1

SELECT id FROM (SELECT * FROM table ORDER BY date_modified DESC) AS last_modified GROUP BY device_id; 
ERROR 1055 (42000): Expression #1 of SELECT list is not in GROUP BY clause and contains nonaggregated column 'last_modified.id' which is not functionally dependent on columns in GROUP BY clause; this is incompatible with sql_mode=only_full_group_by 

サブクエリは、これはエラーを与えました。その後、MySQLのWebサイトでANY_VALUE()を使用してこのエラーを取り除いています。

サブクエリ2

SELECT ANY_VALUE(id) FROM (SELECT * FROM table ORDER BY date_modified DESC) AS last_modified GROUP BY device_id; 
+---------------+------------------+ 
| ANY_VALUE(id) | device_id  | 
+---------------+------------------+ 
|    7 |     | 
|    8 | 71085f00e527bae0 | 
|    5 | ffcecafe5eed4fba | 
+---------------+------------------+ 
3 rows in set (0.00 sec) 

これは、異なるIDが付与されています。しかし、上記のクエリ1でANY_VALUEを使用しているとき、同じ結果が返されます。

MySQL 5.7の最新の行を照会するにはどうすればよいですか?


可能性の重複

MySQL 5.7 return all columns of table based on distinct column

+1

http://meta.stackoverflow.com/questions/333952/why-should-i-provide-an-mcve-for-what-seems-to-me-to-be-a-very-simple- sql-query – Strawberry

+0

あなたのためにIDが必要ですか? –

+0

@Strawberry私は私のための質問をすることを求めていない、私はこのエラーを取得していますERROR 1055(42000):SELECTリストの式#1はGROUP BY句ではなく、非集約列 'last_modified.id' GROUP BY句の列に依存します。これはsql_mode = only_full_group_byと互換性がありません –

答えて

1

これは、おかげで possible duplicateへのリンクは@Shadow ME-

SELECT m1.* 
FROM messages m1 LEFT JOIN messages m2 
ON (m1.name = m2.name AND m1.id < m2.id) 
WHERE m2.id IS NULL; 

のために働いていたクエリです。

関連する問題