针对单个值检查多个 MySQL 列

Posted

技术标签:

【中文标题】针对单个值检查多个 MySQL 列【英文标题】:Checking multiple MySQL columns against a single value 【发布时间】:2013-01-18 16:15:55 【问题描述】:

我有一个非常简单的问题:如何根据单个值检查多个 mysql 列?我基本上在寻找 IN (1, 2, 3, 4) 的对立面,人们可以在其中检查单个列与多个值。

我知道我可以写多个句子,但我一直在寻找更优雅的解决方案。我正在使用 php。谢谢!

【问题讨论】:

你为什么不尝试相反的方法。相反的工作。先试后问 【参考方案1】:

仅使用 IN,如下所示:

select * from TableName where 2 IN (ColumnOne,ColumnTwo,ColumnThree)

【讨论】:

【参考方案2】:

这是你要找的吗?

SELECT *
FROM   tableName
WHERE  1 IN (col1, col2, col3, col4)

【讨论】:

谢谢,我还发现这行得通:SELECT * FROM tableNAME WHERE (col1, col2) = value 其实你提供的解决方案有问题。 IN 语句用作 OR 操作数。我需要的是所有列(AND 操作数)都满足条件。 那为什么不执行SELECT * FROM tableName WHERE col1 = 1 AND col2 = 1 AND col3 = 1 AND col4 = 1 我知道,我只是在问是否有更优雅的解决方案来解决这个问题,避免让查询变长(我在 PHP 脚本中创建它,条件是一个相当长的类财产)。如果没有类似 IN 的操作数使用 AND 逻辑而不是 OR 逻辑,我想我别无他法。 我需要相同的...但只需要在价值上...WHERE 'value%' IN (col1, col2, col3, col4)我想运行一个包含大数据的大查询..【参考方案3】:

where 子句上使用or 逻辑运算符怎么样?

select *
  from your_table
 where col_a = 'value'
    or col_b = 'value'
    or col_c = 'value'
    or col_d = 'value'

【讨论】:

以上是关于针对单个值检查多个 MySQL 列的主要内容,如果未能解决你的问题,请参考以下文章

在 MySQL 中查询单个列中的多个值

PHP PDO 检查 mySQL 表中的多个列并创建不存在的列

检查多个列在表值参数中具有多个值中的任何一个

PostgreSQL 查询帮助:如何检查多个列的值是不是同时增加/减少

检查一列是不是包含另一列的所有值 - Mysql

MySql 检查值是不是存在,然后将它们作为不同的列返回