我在 mysql 中有两个表,其中一个是另一个表的父表。
CREATE TABLE `a` (
`a_id` int(10) unsigned NOT NULL AUTO_INCREMENT,
`name` varchar(32) DEFAULT NULL,
PRIMARY KEY (`a_id`)
);
CREATE TABLE `b` (
`b_id` int(10) unsigned NOT NULL AUTO_INCREMENT,
`a_id` int(10) unsigned NOT NULL,
`stuffs` varchar(32) DEFAULT NULL,
PRIMARY KEY (`b_id`)
);
很明显,两个表之间的关系是 1-N,并且表“b”可能有表“a”中任何记录的记录,也可能没有。
如果表“b”没有表“a”中某些记录的记录,并且我使用此查询加入该表:
SELECT * FROM TABLE a LEFT JOIN TABLE b ON (a.a_id = b.a_id)
然后使用mysqli_fetch_object
要获取记录的对象,它将替换 a.a_id
与 b,a_id
这是 NULL
除了使用 SELECT
之外,我怎样才能阻止它?在查询中?
php 和 mysqli 函数有什么方法可以阻止它吗?
最佳答案
选择具有唯一别名的列
SELECT
a.a_id,
b.a_id as b_a_id
,a.name
,b.b_id
,b.stuffs
FROM
TABLE a
LEFT JOIN TABLE b ON (a.a_id = b.a_id)
具有相同列名的查询将选择最后一列,因此如果您想访问表a的a_id
,您需要为a_id
使用不同的别名表 b 的列
关于php - 如何防止 mysqli_fetch_object 覆盖左连接中的空值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22320961/