检查多列mysql中的多个值

时间:2014-07-15 17:45:21

标签: mysql database rdbms

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

database structure

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

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

我想针对多个值检查多个列。就像,我想选择IRG4BC30FDIRG4BC30FD igbt 所在的所有行,它们在行中的位置并不重要。它们可以位于任何列上的 igbt1 igbt2 igbt3 。 查询应该选择id为4,5和6的行,理想情况是这些值存在于这些行中。

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

1 个答案:

答案 0 :(得分:0)

 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 |
 +------------+------+