[英]Comparing a column using the data of one column in the same table SQL
我有一個有兩列的表,名字和麻木。 第一列包含名稱,第二列包含該名稱的編號。
我要做的是輸出3列,名稱,編號,名稱,其中姓氏列是包含與第一個名稱列相同的編號的名稱。
所以輸出可能看起來像這樣:
| NAME | NUMB | NAME |
|------|------|------|
| john | 1 | lucy |
| stan | 2 | paul |
| jane | 3 | bill |
等等
我在這里使用的表格有一個sqlfiddle鏈接: http ://sqlfiddle.com/#!2 / ed72b / 1
我在MySQL中這樣做。 謝謝。
你需要在同一個表上創建一個JOIN
,如下所示:
SELECT t1.name, t1.numb, t2.name AS name2
FROM test t1
JOIN test t2 ON t1.numb = t2.numb AND t1.name <> t2.name
現場直播 !
你可以試試像
SELECT *,
(SELECT name FROM test tt WHERE tt.numb = t.numb AND tt.name <> t.name limit 1) nname
from test t;
在查看第二組行時,可以看到您的想法的問題
| NAME | NUMB | NAME |
|------|------|------|
| paul | 1 | stan |
| bill | 2 | jane |
| lucy | 3 | john |
這是第一行的反面。 你如何確定使用前3個而不是最后3個?
此查詢將起作用,“SELECT t1.name,t1.numb,t2.name as newnumb from test as t1,test as t2 where t1.numb = t2.numb AND t1.name!= t2.name;”
但它會給你輸出
NAME NUMB NEWNUMB
lucy 1 john
paul 2 stan
bill 3 jane
stan 2 paul
jane 3 bill
john 1 lucy
因為如果幸運的麻木是1,它的約翰也是1,所以它將返回兩個不同的行,這是正確的。
希望這對你有所幫助。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.