我有两张桌子,每张约有20列
用户:
id_user user ..... status token
----------------------------------
2 A 0 XdAQ
帖子:
id_user post ..... status token
-------------------------------------
3 hi 1 sDyTMl
查询:
SELECT u.*,p.*
FROM posts as p
LEFT JOIN users as u ON u.id_user = p.id_user
WHERE p.id_post = 3
LIMIT 1
所以在Php中,可以检索任何值
....
$status=$a['status'];
$token=$a['token'];
我想返回每个表的所有字段来制作帖子内容,问题是每个表中相同列名之间存在冲突。在我的真实表格中,每个列都有超过20列,因此我认为用别名写下列名称是不可取的。有没有办法只对冲突中那些相同的列进行别名?
答案 0 :(得分:0)
你真的应该列出你想要的特定列。这是从表中检索值的最安全的方法。
如果唯一的列是用于join
的列,则可以使用USING
子句:
SELECT *
FROM posts p LEFT JOIN
users as u
USING (id_user)
WHERE p.id_post = 3
LIMIT 1;
USING
子句是ANSI标准,但并非所有数据库都支持它。使用它时,id_post
返回的列中只有一个SELECT *
版本。在LEFT JOIN
中,它是具有值的版本。
如果您有其他具有相同名称的列,则需要使用列别名。一个简短的方法是从一个表中获取所有列,并在另一个表中命名列:
SELECT u.*, p.col1 as p_col1, . . .
FROM posts p LEFT JOIN
users as u
USING (id_user)
WHERE p.id_post = 3
LIMIT 1;