假设我有(下表)。我想输出pid和品牌 其中pid与pid的值不同,但颜色与颜色相同,品牌与品牌相同。但我不能使用红色'对于颜色,它必须是模糊的。
CREATE TABLE Paint
(`pid` int, `color` varchar(20), `finish` varchar(30), `brand`varchar(30))
;
INSERT INTO Paint
(`pid`, `color`, `finish`, `brand`)
VALUES
(1234, 'red', 'matt', 'Walmart'),
(1235, 'cyan', 'gloss', 'behr'),
(1236, 'yellow', 'gloss', 'Lowes'),
(1237, 'green', 'rough', 'HomeDepot'),
(1238, 'red', 'gloss', 'Walmart'),
;
这就是我认为的,但是我使用的结果一无所获。
Select brand, pid
From Paint
Where pid != pid and brand = brand and color = color
我想输出
PID BRAND
1234 Walmart
1238 Walmart
答案 0 :(得分:1)
SELECT a.brand, a.pid
FROM Paint a, Paint b
WHERE
a.pid != b.pid
AND a.brand = b.brand
AND a.color = b.color
GROUP BY a.brand, a.pid
;
答案 1 :(得分:1)
你必须进行自我加入并引用同一个表,就像它是两个不同的表一样。
调整SQL(还有其他方法):
Select p1.brand, p1.pid
From Paint as p1, Paint as p2
Where p1.pid != p2.pid and p1.brand = p2.brand and p1.color = p2.color
这是一个显示它工作的小提琴:http://sqlfiddle.com/#!9/d9ab5/3