我有表列這個簡單的加入:MySQL的 - 指定要使用後加入
SELECT * FROM table1 S
JOIN table2 S2
ON S.PARENT_ID = S2.ID
WHERE S.STATUS = 'TEST'
在獲取結果,並通過行迭代後,我怎麼能指定要使用的錶行?例如,我在兩個表中都有相同的列名STATUS,但是當使用行$row['STATUS']
時,它從表S2中取出表S2中的列而不是表S
我有表列這個簡單的加入:MySQL的 - 指定要使用後加入
SELECT * FROM table1 S
JOIN table2 S2
ON S.PARENT_ID = S2.ID
WHERE S.STATUS = 'TEST'
在獲取結果,並通過行迭代後,我怎麼能指定要使用的錶行?例如,我在兩個表中都有相同的列名STATUS,但是當使用行$row['STATUS']
時,它從表S2中取出表S2中的列而不是表S
當你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']
將工作。
在select中明確指定列而不是使用select *
。
您可以顯式指定的列名,並使用別名重複的命名者,從結果集中訪問他們兩個:
例如
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
這工作完美,謝謝 – bushdiver