MySQL:创建逗号分隔列表并在 IN 中使用

标签 mysql sql select group-concat find-in-set

我的功能代码如下。

DECLARE ids VARCHAR(55);
SELECT  GROUP_CONCAT(id) INTO ids 
        FROM tableName WHERE ...;
SELECT CONCAT(GROUP_CONCAT(id), ids ) INTO ids FROM tableName .....;
SELECT column_name FROM tableName WHERE id IN (**ids**);

在此,我使用两个 select 语句创建 id 列表并应用到 IN 列表中。它给了我空结果。如果我像 CONCAT(GROUP_CONCAT(id), CAST(ids as char) ) 一样 CAST id,那么它会给我第一行结果。

最佳答案

试试这个:

DECLARE ids VARCHAR(55);
SELECT GROUP_CONCAT(id) INTO ids 
FROM (SELECT id 
      FROM tableName 
      WHERE...
      UNION 
      SELECT id 
      FROM tableName
      WHERE....
) AS A;

SELECT column_name FROM tableName WHERE FIND_IN_SET(id, ids);

关于MySQL:创建逗号分隔列表并在 IN 中使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27702021/

相关文章:

mysql - 如何在mysql中获取每个视频的所有子类别

sql - WHERE ... IN 条件和子查询中的多列

sql - 使用直线时避免在列名中打印表名

css - Materialise 的 select 底线无法禁用

sql - 范围值 SQL

mysql - MySQL 中两个 Select 查询的结果相减

php - 在sql中选择多个对象并查看是否至少有1个具有不同的值?

php - 将 opencart 从 1.5.6.4 升级到 2.x.x。给出 JSON 错误

php - 使用 php/html 显示的 mysql blob 图像

sql - 如何在具有逗号分隔值的字段中查询没有(数组值)的 SQL 行?