【问题标题】:Use Variable For IN Operation使用变量进行 IN 操作
【发布时间】:2016-06-30 13:04:41
【问题描述】:

如何将以下变量内容用于 IN 查询...

SET @var = '1,2,3';
SELECT * FROM Table WHERE ID IN (@var);

【问题讨论】:

  • 显示表的架构
  • 您在原始查询 SELECT OtherID FROM Table WHERE X = 1 中没有 GROUP BYDISTINCT,因此它不是 100% 等效的。
  • 我已经编辑(而不是删除)我的问题,以将其重新集中在问题的核心元素上......现有的答案试图集中在错误的部分......这就是它的原因不再相关。

标签: mysql


【解决方案1】:

使用连接

SELECT t1.* 
FROM Table t1
JOIN Table t2 on t1.OtherID = t2.OtherID
WHERE t2.X = 1

【讨论】:

  • 您可以自行加入同一张表。我更新了我的查询
  • @Barry 你说的快得多是什么意思?你能提供一些数字吗?对我来说,这个技巧可以更快的唯一原因是你没有正确测试 mysql 缓存。所以尝试使用SQL_NO_CACHE 运行这两个查询以查看每个查询的原始性能。
  • @Barry:使用我的查询仍然很慢?然后将索引添加到列X。那应该可以解决您的问题
【解决方案2】:

通过查看this answer找到了解决方案

SET @var = '1,2,3';
SET @Expression=CONCAT('SELECT * FROM TableWHERE ID IN (',@var,')');
PREPARE myquery FROM @Expression;
EXECUTE myquery

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-10-08
    • 1970-01-01
    • 2017-02-24
    相关资源
    最近更新 更多