[英]comparing rows in sql on two different columns
id address retailer
1 A 11
2 A 11
3 A 11
4 A 12
5 A 13
6 B 12
7 B 12
8 B 13
我的輸出應該是
id address retailer
1 A 11
4 A 12
5 A 13
6 B 12
8 B 13
即我的查詢應返回具有相同地址但沒有相同零售商的 ID 。
怎么得到這個?
假設您要加入沒有重復的列,這是迄今為止最常見的情況:
A
和B
的inner join
給出A intersect B
的結果,即維恩圖相交的內部。
一個outer join
的A
和B
給出的結果A union B
,即維恩圖聯合的外部分。
假設您有兩個表,每個表都有一個列,數據如下:
A B
- -
1 3
2 4
3 5
4 6
請注意,(1,2)是A
唯一A
,(3,4)是共同的,(5,6)是B
唯一的。
Inner join
:
使用任一等價查詢的inner join
聯接給出兩個表的交集,即它們共有的兩行。
select *
from a
INNER JOIN b on a.a = b.b;
select a.*,b.*
from a,b
where a.a = b.b;
a | b
--+--
3 | 3
4 | 4
Left outer join
:
left outer join
將給出A中的所有行,以及B中的所有常見行。
select *
from a
LEFT OUTER JOIN b on a.a = b.b;
select a.*,b.*
from a,b
where a.a = b.b(+);
a | b
--+-----
1 | null
2 | null
3 | 3
4 | 4
Full outer join
:
full outer join
將為您提供A
和B
A
並集,即A
所有行和B
中的所有行。如果A中的某物在B中沒有對應的基准,則B部分為null,反之反之亦然。
select *
from a
FULL OUTER JOIN b on a.a = b.b;
a | b
-----+-----
1 | null
2 | null
3 | 3
4 | 4
null | 6
null | 5
嘗試使用group by
子句,如下所示:
select min(id), address, retailer
from tab
group by address, retailer
select min(id) as id,address, retailer
from table1
group by address, retailer
order by id
您需要的查詢是:
SELECT min(id), address, retailer
FROM table1 AS t1
group by address, retailer
order by address
這是來源
使用它:正在工作:
SELECT * FROM `sampletable` GROUP BY address, retailer
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.