2013-06-02 38 views
0

我有表列這個簡單的加入:MySQL的 - 指定要使用後加入

SELECT * FROM table1 S 
JOIN table2 S2 
ON S.PARENT_ID = S2.ID 
WHERE S.STATUS = 'TEST' 

在獲取結果,並通過行迭代後,我怎麼能指定要使用的錶行?例如,我在兩個表中都有相同的列名STATUS,但是當使用行$row['STATUS']時,它從表S2中取出表S2中的列而不是表S

回答

2

當你JOIN結果兩個表設置在同一行。您不應該在生產中使用SELECT *(用於在命令行上運行查詢,我認爲這很好)。最好明確你想要選擇的查詢。

SELECT S.STATUS, S2.STATUS FROM table1 S JOIN table2 S2 ON (PARENT_ID = S.ID) 
WHERE S.STATUS = 'TEST' 

如果你想區分它們,你也可以別名列名。

SELECT S.STATUS AS t1_status 

然後在php中,$row['t1_status']將工作。

+0

這工作完美,謝謝 – bushdiver

0

在select中明確指定列而不是使用select *

2

您可以顯式指定的列名,並使用別名重複的命名者,從結果集中訪問他們兩個:

例如

SELECT s.col1, s.col2, s.STATUS AS s_status, s2.STATUS FROM table1 S 
    JOIN table2 S2 
    ON S.PARENT_ID = S2.ID 
    WHERE S.STATUS = 'TEST' 

    print $row['s_status']; // => data from table S 
    print $row['STATUS'];  // => data from table S2