我具有下图所示的数据库结构。我的表名称是compare_analytics



我知道如何针对多个列检查单个值。如下所示的示例:

SELECT * FROM `compare_analytics` WHERE '1MB20D-060' IN (igbt1,igbt2,igbt3)


我想针对多个值检查多个列。就像,我想选择存在IRG4BC30FDIRG4BC30FD igbt的所有行,它们在行中的位置无关紧要。它们可以在任何列的igbt1,igbt2或igbt3中。
查询应该选择ID为4,5和6的行,因为这些行中存在这些值,因此理想情况下。

我正在寻找没有OR子句的查询,我知道可以使用OR子句实现,但是应该有一些更短的方法来实现。

最佳答案

 DROP TABLE IF EXISTS compare_analytics;

 CREATE TABLE compare_analytics
 (igbt       VARCHAR(20) NOT NULL
 ,type INT NOT NULL
 ,PRIMARY KEY(igbt,type)
 );

 INSERT INTO compare_analytics VALUES
 ('1MB20D-040',1),
 ('1MB20D-050',2),
 ('1MB20D-060',3);

 SELECT *
   FROM compare_analytics
  WHERE igbt IN ('1MB20D-040','1MB20D-060');

 +------------+------+
 | igbt       | type |
 +------------+------+
 | 1MB20D-040 |    1 |
 | 1MB20D-060 |    3 |
 +------------+------+

关于mysql - 检查多列mysql中的多个值,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/24764777/

10-09 23:13