iT邦幫忙

0

sql查詢表格內容

  • 分享至 

  • xImage

Table資料如下:

id name payer
1 王一 1
2 李二 2
3 張三 3
4 陳四 4
5 陳五 4
6 陳六 4

欄位payer會顯示對應到之id的name ,該如何下查詢sql語法?
目標Table:

id name payer
1 王一 王一
2 李二 李二
3 張三 張三
4 陳四 陳四
5 陳五 陳四
6 陳六 陳四
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中
0
㊣浩瀚星空㊣
iT邦大神 1 級 ‧ 2022-07-08 10:10:00
最佳解答
SELECT db.id,db.name,payerDb.name FROM db 
LEFT JOIN (SELECT * FROM db ) AS payerDb ON (db.payer=payerDb.id)

就這樣吧。有好幾種寫法。我只用其中一個

sibulun iT邦新手 5 級 ‧ 2022-07-09 09:51:26 檢舉

可行

0
草原小鹿
iT邦新手 5 級 ‧ 2022-07-08 11:39:49
SELECT t.[id]
      ,t.[name]
      ,pt.[name] as payer
  FROM [dbo].[table] as t
  LEFT JOIN [dbo].[table] as pt
  ON t.payer = pt.id

大概這樣(?

sibulun iT邦新手 5 級 ‧ 2022-07-09 09:53:12 檢舉

可行 ,跟浩瀚想的很像 ,left join關聯自己 ,最佳解給先回答的喔~ 謝謝你們

0
wayne0127
iT邦新手 5 級 ‧ 2022-10-06 09:44:26
SELECT outtab.`id`, outtab.`name`, (SELECT intab.`name` FROM `[table_name]` AS intab WHERE intab.`id` = outtab.`payer`) AS 'payer' FROM `[table_name]` AS outtab
0
jcisme
iT邦見習生 ‧ 2022-10-24 14:15:20

(我預設有兩個table長的一樣,分別叫table1、table2)

USE test;
SELECT table1.id,table1.name,table2.name FROM table1,table2
	WHERE table1.payer = table2.id;

這是執行的結果:
https://ithelp.ithome.com.tw/upload/images/20221024/20154306RKxiMtEvjJ.png

小弟最近剛學SQL,想到這樣比較簡單的作法,有問題還請多指教,感謝!

0
zekeabc
iT邦新手 5 級 ‧ 2022-10-29 21:39:26
SELECT tab.id, tab.name, ptab.name
FROM tab, tab as ptab
WHERE tab.payer = ptab.id;

將原先的資料表(tab) as 成 ptab 接著用 WHERE tab.payer = ptab.id 就能像目標Table一樣了

我要發表回答

立即登入回答