編輯(澄清):Hannes 想要搜索具有特定 VID 的記錄以及來自同一個表的關聯記錄,條件是 AID(來自原始記錄)= TID。
編輯,因為 wrog 問題描述(對不起!)
我需要 MySQL 中的一個查詢,它遍歷選定的行并創建一個結果陣列。其模式如下所示。
目前我一次又一次地呼叫一個選擇。有沒有辦法從中創建單個查詢?非常感謝!
表結構
ID、VID、AID、...(標題等)... TID
- 選擇 vid 欄位
SELECT id, vid, aid FROM tbl WHERE vid = 24;
ID VID AID
1 24 NULL
2 24 NULL
3 24 712
4 24 713
5 24 714
6 24 715
7 24 716
...
- 如果輔助不為空 => 選擇具有 AID 值的同一個表作為另一個欄位的條件
SELECT * FROM tbl WHERE TID = 112
SELECT * FROM tbl WHERE TID = 113
SELECT * FROM tbl WHERE TID = 114
SELECT * FROM tbl WHERE TID = 115
SELECT * FROM tbl WHERE TID = 116
- 結果應該是(所有空行和上面的選定行)
ID VID AID ...
1 24 NULL
2 24 NULL
75 24 712
79 24 713
88 24 714
92 24 715
97 24 716
例如,這個問題是我需要一個回圈和選擇音調。偽代碼:
rows = []
foreach (main_select)
{
if (aid != null)
{
selected_row = select * from tbl where tid = aid
rows[] = selected_row
}
else
{
rows[] = main_select_row_from_iteration
}
}
uj5u.com熱心網友回復:
您應該能夠通過單個查詢完成所有這些操作
SELECT tbl1.ID as TBL1_ID, tbl1.VID as TBL1_VID, tbl1.AID as TBL1_AID,
tbl2.ID as TBL2_ID, tbl2.VID as TBL2_VID, tbl2.AID as TBL2_AID
FROM tbl AS tbl1
LEFT JOIN tbl AS tbl2 ON tbl1.AID = tbl2.TID
WHERE tbl1.VID = 24 AND tbl1.AID IS NOT NULL
它是同一張表的自連接,WHERE 條件確保您擁有初始 VID 并且 AID 中沒有 NULL 值。JOIN 接受 AID 并將其與 TID 匹配。
SELECT 串列中的欄位來自兩者,通過別名分隔。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qianduan/524716.html
