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

LIMIT&IN / ALL / ANY / SOME子查询出现问题

赵晨
2023-03-14
问题内容

我有这个查询:

SELECT count(cp.CxID) as intSmokers 
FROM CustPrimarySmoking cp 
JOIN Customer c ON cp.CxID = c.CustomerID 
WHERE 
cp.CxID IN (SELECT CxID FROM CustPrimarySmoking WHERE CxID = cp.CxID LIMIT 1, 9999)

想法是,计数将基于嵌套查询的结果,该查询将检索除第一个记录以外的该客户的所有记录。

但是,我遇到了这个错误,我认为这是很严重的错误:

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

有人知道这样做的其他方式吗?

谢谢


问题答案:

这就是您需要进行的操作。请参阅我已经解决的示例。

mysql> select * from test;
+------+-------+
| id   | name  |
+------+-------+
|    1 | name1 |
|    2 | name2 |
|    3 | name3 |
|    4 | name4 |
+------+-------+
4 rows in set (0.00 sec)

mysql> select * from test1;
+------+------+--------+
| id   | tid  | name2  |
+------+------+--------+
|    1 |    2 | name11 |
|    2 |    3 | name12 |
|    3 |    4 | name13 |
+------+------+--------+
3 rows in set (0.00 sec)

mysql> select
    ->  t1.name
    -> from
    ->  test t1
    -> join
    ->  test1 t2 on t2.tid = t1.id
    -> join
    ->  (select id from test where id <4 limit 3) as tempt on tempt.id = t1.id;
+-------+
| name  |
+-------+
| name2 |
| name3 |
+-------+
2 rows in set (0.00 sec)

希望这可以帮助。



 类似资料:
  • 问题内容: 这是我正在使用的代码 这是给我的错误 我该如何解决这个问题?它使它的另一种方式…所以我没有得到错误… 问题答案: 除了使用IN,还可以使用JOIN

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

  • 主要内容:Oracle ANY运算符简介,Oracle ANY运算符的例子在本教程中,您将学习如何使用Oracle 运算符将值与列表或子查询进行比较。 Oracle ANY运算符简介 Oracle 运算符用于将值与子查询返回的值或结果集列表进行比较。下面举例说明运算符与列表或子查询一起使用时的语法: 在这个语法中: 运算符前面必须有一个运算符,例如:,,,,,。 列表或子查询必须用圆括号包围。 使用运算符将值与列表进行比较时,Oracle将初始条件扩展到列表的所有元素,

  • 问题内容: 当表开始增长时,我担心WHERE子句中IN的性能。有没有人对这种查询有更好的策略?子查询返回的记录数比TradeLine表中的记录数增长得慢得多。TradeLine表本身以每天10个的速度增长。 谢谢你。 编辑:我使用了将子查询从WHERE移到FROM的想法。我对有助于此新查询的所有答案投了赞成票。 问题答案: 子句中的子查询不依赖于外部查询中的任何内容。您可以安全地将其移到子句中;一

  • 问题内容: 我很好奇为何应该比更快地执行。 当比尔·卡尔文提出一个要点时,我正在回答一个问题。当您使用它时,它使用相关子查询(依赖子查询),而IN()仅使用子查询。 解释显示,并且两者都使用了一个依赖子查询,并且都只使用了一个子查询..所以我很好奇关联子查询如何比子查询更快? 我以前使用过EXISTS,它的执行速度比IN快,这就是我感到困惑的原因。 这是带有说明的SQLFIDDLE 一些问题 在上

  • 问题内容: 以下两个查询是子查询。两者相同,都对我有效。但是问题是方法1的查询大约需要10秒才能执行,而方法2的查询不到1秒。 我能够将方法1的查询转换为方法2,但是我不了解查询中正在发生什么。我一直想自己弄清楚。我真的很想了解以下两个查询之间的区别是什么,以及如何获得性能提升?它背后的逻辑是什么? 我是这些高级技术的新手。我希望有人能在这里帮助我。考虑到我阅读的文档并没有给我任何提示。 方法1: