MySql - 指定连接后要使用的表列

时间:2013-06-02 19:35:05

标签: mysql join

我有这个简单的加入:

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

获取结果并遍历行后,如何指定要使用的表行?例如,我在两个表中都有相同的列名STATUS,但是当使用行$row['STATUS']时,它从表S2而不是表S中获取列

3 个答案:

答案 0 :(得分:2)

您可以显式指定列名称,并对重复的命名列表使用别名从结果集中访问它们:

e.g。

    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

答案 1 :(得分: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']将起作用。

答案 2 :(得分:0)

在select中明确命名列,而不是使用select *