2017-04-21 40 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 S是的sql_mode不相容= only_full_group_by

这意味着,如果你也想取id,你应该在group by语句添加id

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

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', '');