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