如何比较SQL中的2个元组值?

时间:2015-03-18 05:54:38

标签: sql

假设我有(下表)。我想输出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

2 个答案:

答案 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