我有这个简单的加入:
SELECT * FROM table1 S
JOIN table2 S2
ON S.PARENT_ID = S2.ID
WHERE S.STATUS = 'TEST'
获取结果并遍历行后,如何指定要使用的表行?例如,我在两个表中都有相同的列名 STATUS ,但是当使用 row 时 $row['STATUS']
,它从表 S2 而不是表 S 中获取列
您可以显式指定列名,并为重复命名的列使用别名以从结果集中访问它们:
例如
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
当您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 *
.