检查一个值的多个列

Bre*_*ett 40 mysql sql select query-optimization

我有一个像这样的列的表,例如:

id,col1,col2,col3,col4
Run Code Online (Sandbox Code Playgroud)

现在,我想检查ANYcol1, col2, col3, col4价值已经传入.

要做的很长的路要走..

SELECT * FROM table WHERE (col1 = 123 OR col2 = 123 OR col3 = 123 OR col4 = 123);
Run Code Online (Sandbox Code Playgroud)

我想这是相反的版本IN.

有没有更简单的方法来做我想要的?

Mah*_*mal 103

您可以使用IN谓词,如下所示:

SELECT * FROM table WHERE 123 IN(col1, col2, col3, col4);
Run Code Online (Sandbox Code Playgroud)

SQL小提琴演示


这是IN的反面版本.

不,不是,OR就像你在问题中那样使用s一样.


澄清一下:

谓词IN或集合成员资格定义为1:

在此输入图像描述

哪里Value Expression可以是2:

在此输入图像描述

所以这样做很好,使用值表达式123,这是一个文字.


1,2:图像来自:SQL查询只是凡人(R):SQL中数据操作的动手指南

  • 不,我想要从tablename中选择select*,其中'123','456'(col1,col2,col3) (3认同)
  • @AlagesanPalani - 同样的方式:`SELECT*FROM YourTable WHERE columnName IN(123,456');` (2认同)