我有如下图所示的数据库结构。我的表名是compare_analytics
我知道如何针对多个列检查单个值。示例如下:
SELECT * FROM `compare_analytics` WHERE '1MB20D-060' IN (igbt1,igbt2,igbt3)
我想针对多个值检查多个列。就像,我想选择IRG4BC30FD
和IRG4BC30FD
igbt 所在的所有行,它们在行中的位置并不重要。它们可以位于任何列上的 igbt1 , igbt2 或 igbt3 。
查询应该选择id为4,5和6的行,理想情况是这些值存在于这些行中。
我正在寻找没有OR
子句的查询,我知道可以用OR
子句实现,但是应该有一些更短的方法来实现这一点。
答案 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 |
+------------+------+