Mysql 分组方式为';不能使用子查询
我有以下疑问Mysql 分组方式为';不能使用子查询,mysql,mariadb,Mysql,Mariadb,我有以下疑问 SELECT `id` FROM `TableA` WHERE `color` LIKE '%red%' AND `id` IN (SELECT `id` FROM `TableB` GROUP BY `option`) 当我运行此查询时,得到的结果与运行 SELECT `id` FROM `TableA` WHERE `color` LIKE '%red%' AND `id` IN (SELECT `id` FROM `TableB`) 我有400多张唱片。但是如果我跑
SELECT `id` FROM `TableA` WHERE `color` LIKE '%red%'
AND `id` IN (SELECT `id` FROM `TableB` GROUP BY `option`)
当我运行此查询时,得到的结果与运行
SELECT `id` FROM `TableA` WHERE `color` LIKE '%red%'
AND `id` IN (SELECT `id` FROM `TableB`)
我有400多张唱片。但是如果我跑
SELECT `id` FROM `TableB` GROUP BY `option`
我有18张唱片
我已经有一段时间没有运行此查询了,但我记得它正在运行。从上次运行到现在发生的唯一变化是我从MySQL 5.5(或5.6)升级到了MariaDB 10.1。知道它为什么停止工作了吗
下面是SQL小提琴
它返回ID为1、2和3的记录,即使1和2在
表B中具有相同的值这与mysql上不允许不正确使用group by的新版本有关
在查询中,您使用的是没有聚合函数的group by,这是不允许的
而不是公寓
SELECT `id` FROM `TableA` WHERE `color` LIKE '%red%'
AND `id` IN (SELECT `id` FROM `TableB` GROUP BY `option`)
您应该为我们提供一个用于检索id的聚合函数,例如:
SELECT `id` FROM `TableA` WHERE `color` LIKE '%red%'
AND `id` IN (SELECT min(`id`) FROM `TableB` GROUP BY `option`)
@MKhalidJunaid正确..我的回答与提供的问题密切相关..无论如何,与group by的问题保持不变