低版本中mysql不支持在limit语句中有子查询

Posted 汤高

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了低版本中mysql不支持在limit语句中有子查询相关的知识,希望对你有一定的参考价值。


select * from  exec_activity_effect_day oe where oe.ACTIVITY_ID  in   (select  DISTINCT(e.ACTIVITY_ID) from exec_activity_effect_day e limit 0 ,3



[SQL] select * from  exec_activity_effect_day oe where oe.ACTIVITY_ID  in   (select  DISTINCT(e.ACTIVITY_ID) from exec_activity_effect_day e limit 0 ,3) 


[Err] 1235 - This version of mysql doesn't yet support 'LIMIT & IN/ALL/ANY/SOME subquery'


低版本中mysql不支持在limit语句中有子查询


所以只要在有limit的语句里再向外包一层

( select t.ACTIVITY_ID from (select  DISTINCT(e.ACTIVITY_ID) from exec_activity_effect_day e limit 0 ,3) as t)

把上面的结果作为一个新的t表


再查t表就ok ,整个语句如下

SELECT
*
FROM
exec_activity_effect_day oe
WHERE
oe.ACTIVITY_ID IN (
SELECT
t.ACTIVITY_ID
FROM
(
SELECT DISTINCT
(e.ACTIVITY_ID)
FROM
exec_activity_effect_day e
LIMIT 0,
3
)AS t
)

以上是关于低版本中mysql不支持在limit语句中有子查询的主要内容,如果未能解决你的问题,请参考以下文章

mysql不支持在子查询中使用limit解决办法

如何识别查询语句中有子查询?

OBIEE - 是不是可以在 SELECT 语句中有子查询

MySQL - 此版本的 MySQL 尚不支持 'LIMIT & IN/ALL/ANY/SOME 子查询

从没有子查询的 MySQL 表中获取详细信息

IF 语句中带有子查询的 MySQL SELECT 语句的语法