当前位置: 首页 > 面试题库 >

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

翁和颂
2023-03-14
问题内容

我有一个带有以下各列的表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子查询”

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


问题答案:

您收到的错误并非完全是由于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;


 类似资料:
  • 问题内容: 是否有ANSI SQL替代MYSQL LIMIT关键字? LIMIT关键字限制SELECT返回的行数,例如: 返回2行。 在前10个之后返回2行。 问题答案: 这显示了不同的方式:

  • 问题内容: 如标题所述,我想要一个解决方法… 干杯 问题答案: 您可能会希望将an添加到嵌套查询中。

  • 问题内容: 我想将表中的行从1001开始更新到下一个1000。 我尝试了以下查询: 这给了我语法错误。它是否正确?我在这里犯任何错误吗? 我们可以这样限制更新吗? 另外,我尝试更新的行的数据类型为INTEGER的列p_id具有Null值。因此,我什至无法使用以下查询进行更新: 我上面的查询正确吗? 要做到这一点怎么办? 问题答案: 处理null时,不匹配null值。您可以使用或 可以与但只能一起使

  • 样本子句 sample_clause允许您指示数据库从表中的随机数据样本中进行选择,而不是从整个表中进行选择。 我想使用QueryDSL运行下面的查询 样本子句 sample_clause允许您指示数据库从表中的随机数据样本中进行选择,而不是从整个表中进行选择。 从测试t样本(80)中选择,其中t.test_id=01,t.test _ suite _ id = 02 其中条件是动态的,我使用qu

  • 问题内容: 现在我要使用 但这行不通,有什么想法吗? 问题答案: SQL不支持表名使用变量/ etc-支持您要求的唯一方法是使用动态SQL:

  • 问题内容: 我正在写一个存储过程,其中有一个名为 my_size 的输入参数,它是一个 INTEGER 。我希望能够在语句的子句中使用它。显然,这不受支持,是否有解决方法? 问题答案: 通过搜索找到了这篇文章。我在下面粘贴了相关文本。 这是一个论坛帖子,显示了准备好的语句的示例,可让您将变量值分配给limit子句: http://forums.mysql.com/read.php?98,12637