2017-04-21 8 views
0

これは結果としてtextカラムを返す現在のクエリです。サブクエリを使用するときにIDを選択できません

SELECT text FROM `tableA` WHERE EXISTS (SELECT id FROM tableA WHERE `id` LIKE '%00%') GROUP BY text 

しかし、私はidも選択することにしたいが、私の下のクエリがエラーを与え、私がなぜわかりません。 (だけでなく、選択したノートのID)が

SELECT id, text FROM `tableA` WHERE EXISTS (SELECT id FROM tableA WHERE `id` LIKE '%00%') GROUP BY text 


Error: 
#1055 - Expression #1 of SELECT list is not in GROUP BY 
clause and contains nonaggregated column 
'search_db.tableA.id' which is not 
functionally dependent on columns in GROUP BY clause; 
this is incompatible with sql_mode=only_full_group_by 

私の完全なクエリは次のようになります。

は私が実際には複数のテーブルから列のテキストを選択し、テキスト列に一意の値をしたいんだ

SELECT DISTINCT text FROM `tableA` AS `table` WHERE EXISTS (SELECT * FROM tableA WHERE `id` LIKE '%0.219%') UNION 
SELECT DISTINCT text FROM `tableB` AS `table` WHERE EXISTS (SELECT * FROM tableB WHERE `id` LIKE '%0.219%') UNION 
SELECT DISTINCT text FROM `tableC` AS `table` WHERE EXISTS (SELECT * FROM tableC WHERE `id` LIKE '%0.219%') 
+1

集約関数はありません。集約節は必要ありません。問題が解決しました。 – Strawberry

+0

@Strawberry!その点について説明してください。私も同じ問題に直面していますか? –

+0

@Strawberry、私はそれを得ることはありません...どちらが必要ではありませんか?私の編集したポストを見てください。私は完全な質問を投稿しました。 – 112233

答えて

0
SELECT id, text FROM `tableA` WHERE `id` LIKE '%00%' GROUP BY text 
+0

私はこれを何度も試みましたが、LIKEはグループでうまくいっていません。サブクエリのアイデア – 112233

+0

がグループとうまくやられていないのはグループごとに異なるカラムに適用されています。 – Shahrukh

+0

phpmyadminで試してみるとエラーになります。上記の私の投稿を参照してください。 – 112233

1

thi

SELECT id, text 
FROM `tableA` 
WHERE EXISTS (SELECT id FROM tableA WHERE `id` LIKE '%00%') 
GROUP BY id, text 

それとも、あなたのsql_modeからonly_full_group_byを削除することができます:

sがあなたが group by文で idを追加する必要があり、あなたも idを取得したい場合は、これは意味

ONLY_FULL_GROUP_BY = sql_modeのと互換性がありません。

set @@GLOBAL.sql_mode = replace(@@GLOBAL.sql_mode, 'ONLY_FULL_GROUP_BY', ''); 

おそらく現在のセッションでsql_modeを変更すると、より良い:

set @@session.sql_mode = replace(@@session.sql_mode, 'ONLY_FULL_GROUP_BY', ''); 
関連する問題