0

我有这个简单的加入:

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

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

4

3 回答 3

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
于 2013-06-02T19:39:47.940 回答
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']将工作。

于 2013-06-02T19:40:16.440 回答
0

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

于 2013-06-02T19:38:17.140 回答