簡體   English   中英

使用同一個表SQL中的一列數據比較列

[英]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;

SQL Fiddle DEMO

在查看第二組行時,可以看到您的想法的問題

 | 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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM