2010-11-02 45 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