2010-11-02 26 views
1

我有一個問題與MySQL的內部選擇語句總是與外表的第一行計算。在下面的代碼中,「WHERE otherTable.someID = myTable1.table1_id」應該(在我的腦海中)與最初選擇的外部myTable1.table1_id匹配。也就是說,table1的每一行都被處理,但是myTable1.table1_id的內部似乎始終卡在table1的第一行,導致第一行輸出正確,但後續所有行都不正確。Mysql - 卡住所有行的單行值?

它就好像我用第一行ID的實際值替換內層myTable1.table1_id並運行該查詢。

下面是代碼:

SELECT 
    myTable1.table1_id, 
    ..., 
    (SELECT otherStuff FROM otherTable WHERE otherTable.someID = myTable1.table1_id) 
FROM table1 myTable1 
ORDER BY myTable1.table1_id; 

爲尋找謝謝!

回答

2

貌似你試圖做一個簡單的連接:

SELECT 
    myTable1.table1_id, 
    ..., 
    otherstuff from othertable 
FROM table1 myTable1 join othertable on myTable1.table1_id=othertable.some_ID 
ORDER BY myTable1.table1_id; 

如果你需要找回結果行,即使othertable不包含匹配的ID,改變連接到left join

+0

如果myTable1和其他表是同一個表的不同實例(即兩者都是「table1」)會怎樣? – Greg 2010-11-02 15:42:52

+1

不是問題,但你需要別名引用表。eg.SELECT * FROM tabel1 t1 join table1 t2 WHERE t1.ref = t2.parentref – Jaydee 2010-11-02 16:14:00