在mysql中是否可以将in语句与varchar列一起使用

在mysql中是否可以将in语句与varchar列一起使用,mysql,Mysql,在mysql中是否可以将in语句与varchar列一起使用 就我而言 SELECT `custids` FROM user WHERE id = 1; 它返回custids列,该列为varchar,值以逗号分隔,如1,2,3 当我运行此查询时 SELECT * FROM `user` WHERE user.id IN(`custids`); 它不像我预期的那样运行 实际上,我要运行如下查询: SELECT * FROM `user` WHERE user.id IN(1,2,3); 但我认

在mysql中是否可以将in语句与varchar列一起使用

就我而言

SELECT `custids` FROM user WHERE id = 1;
它返回custids列,该列为varchar,值以逗号分隔,如1,2,3

当我运行此查询时

SELECT * FROM `user` WHERE user.id IN(`custids`);
它不像我预期的那样运行

实际上,我要运行如下查询:

SELECT * FROM `user` WHERE user.id IN(1,2,3);
但我认为它是这样运行的:

SELECT * FROM `user` WHERE user.id IN('1,2,3');
试一试

试一试


如果无法使用1,2,3而不是“1,2,3”生成查询,则可以尝试使用FIND_IN_SET


如果无法使用1,2,3而不是“1,2,3”生成查询,则可以尝试使用FIND_IN_SET


我想问题是,我们能不能用?而不是找一个替代者? 在我的查询中,我使用CASE子句:-


因此,它也适用于Varchar,但您需要在双引号内编写

我想问题是,我们能不能用?而不是找一个替代者? 在我的查询中,我使用CASE子句:-


因此,它也适用于Varchar,但您需要在双引号内编写

选择*FROM user WHERE user.id inSELECT custids FROM user WHERE id=1;如果有机会更改数据库布局,请这样做。数据库不打算以这种方式使用;无法进行任何优化。请选择*FROM user WHERE user.id inSELECT custids FROM user WHERE id=1;如果有机会更改数据库布局,请这样做。数据库不打算以这种方式使用;没有优化是可能的。+0.5不起作用,所以+1:这是对这个问题的完美答案。但它只能作为设计糟糕的数据库的一种变通方法。一旦数据量增加,这些东西就会咬你。+0.5这不起作用,所以+1:这是对这个问题的完美回答。但它只能作为设计糟糕的数据库的一种变通方法。一旦数据量增加,这些东西就会咬你。
    SELECT * FROM `user` WHERE user.id in('1','2','3');
 SELECT * FROM `user` WHERE FIND_IN_SET(user.id, '1,2,3') IS NOT NULL;
case
when customer_location.city in('bangalore','Mumbai')
              then cond1
              else cond2
              end