在MySql中使用IN子句的不同方法

在MySql中使用IN子句的不同方法,mysql,Mysql,我在MySQL中发现了两种使用IN子句的方法: 第1版: SELECT * FROM table_name WHERE column_name IN (val1,val2,...) 第2版: SELECT * FROM table_name WHERE val1 IN (column_name) 如图所示,列名和值的位置是互换的 我没有成功地使用第二个版本! 但我找到了通过第二种方法获得正确结果的方法,我想与大家分享: SELECT * FROM table_name WHERE FIND_

我在MySQL中发现了两种使用IN子句的方法:

第1版:

SELECT * FROM table_name WHERE column_name IN (val1,val2,...)
第2版:

SELECT * FROM table_name WHERE val1 IN (column_name)
如图所示,列名和值的位置是互换的

我没有成功地使用第二个版本! 但我找到了通过第二种方法获得正确结果的方法,我想与大家分享:

SELECT * FROM table_name WHERE FIND_IN_SET(val1, column_name) > 0

显然,您正在将逗号分隔的值存储在单个列中。一个简单的评论太短,无法解释为什么这是一个坏主意。如果要有效地使用数据库,您需要了解连接表。我不是此数据库的所有者,无法更改它。我的问题的目的是在这种情况下找到更好的查询方法。这似乎不是一个问题?因此您找到了用于逗号分隔值的
find\u in\u SET()
函数?祝贺你!:)显然,您正在将逗号分隔的值存储在单个列中。一个简单的评论太短,无法解释为什么这是一个坏主意。如果要有效地使用数据库,您需要了解连接表。我不是此数据库的所有者,无法更改它。我的问题的目的是在这种情况下找到更好的查询方法。这似乎不是一个问题?因此您找到了用于逗号分隔值的
find\u in\u SET()
函数?祝贺你!:)