一尘不染

在MYSQL的子查询中使用LIMIT关键字的替代方法

mysql

我有一个带有以下各列的表TEST:

code_ver (VARCHAR)
suite (VARCHAR)
date (DATE)

现在我想选择10个行,其c的值不同ode_ver & code_ver NOT LIKE '%DevBld%' sorted by date desc.

所以我写了以下查询:

select * 
  from test 
 where code_ver IN (select DISTINCT code_ver 
                      from test 
                     where code_ver NOT LIKE '%DevBld%' 
                     ORDER by date DESC LIMIT 10);

该查询在理想情况下应该可以运行,但是我的MySQL版本说:

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

有人可以建议我替代此查询吗?


阅读 834

收藏
2020-05-17

共1个答案

一尘不染

您收到的错误并非完全是由于MySQL版本引起的。我认为所有版本都支持。您必须更改LIMIT
10的位置,并将其放置在“)”之后。请让我知道这对你有没有用。我在我身上跑了一个风箱,它起作用了。

例如

SELECT * FROM test where name IN (
           SELECT DISTINCT name 
           FROM projects 
           WHERE name NOT LIKE "%DevBld%"  
           ORDER by date_created DESC
 ) LIMIT 10;

更新:尝试以下一种,这种方式可以正常工作:

 SELECT * FROM  automation.e2e_projects WHERE name IN (
       SELECT DISTINCT name 
       FROM automation.e2e_projects
       WHERE name NOT LIKE "%DevBld%"
 ) ORDER by date_created DESC LIMIT 10;
2020-05-17