gpt4 book ai didi

mySQL NATURAL JOIN 显示类似于 LEFT OUTER JOIN 的结果

转载 作者:行者123 更新时间:2023-11-30 23:25:23 26 4
gpt4 key购买 nike

我有以下 mySQL 查询:

SELECT * FROM `objects`
natural join `gPeople`
natural join `gVip`
natural join `gTeachers`

哪个返回:

object_id       name            vip_code           subject
----------------------------------------------------------
003 John 9003 Math

这是因为“John”在 People、Vip 和 Teachers 组中。

我只有两个小组的其他人,希望他们表现得像:

object_id       name            vip_code           subject
----------------------------------------------------------
001 Mary History
002 Holly 9002
003 John 9003 Math

我已经尝试过左外连接,但我最终得到了 objects_id 列的许多副本,由于我使用结果的方式,这是不需要的。

注意:我必须使用 * 因为它是我要做的事情的核心。我需要这些表能够支持添加/删除的列,并且查询能够提取它们。

http://sqlfiddle.com/#!2/eefe7/3/0这是我尝试过的 SQL Fiddle,但我的结果如下所示:

object_id   object_id   name      object_id   vip_code     object_id   subject
------------------------------------------------------------------------------
001 001 Mary 001 History
002 002 Holly 002 9002
003 003 John 003 9003 003 Math

有人知道如何做到这一点吗?

最佳答案

我能够通过在 PHP 中编辑结果来解决我的问题。

$sql = "SELECT `o`.`object_id` AS `ID`, `gP`.*, `gV`.*, `gT`.* FROM `objects` `o`
left outer join `gPeople` `gP` ON `o`.`object_id` = `gP`.`object_id`
left outer join `gVip` `gV` ON `o`.`object_id` = `gV`.`object_id`
left outer join `gTeachers` `gT` ON `o`.`object_id` = `gT`.`object_id`";

$result = mysql_query($sql);

while ($row = mysql_fetch_object($result)) {
$row->object_id = $row->ID;
unset($row->ID);
}

这导致:

object_id       name            vip_code           subject
----------------------------------------------------------
001 Mary History
002 Holly 9002
003 John 9003 Math

代替:

object_id       name            vip_code           subject
----------------------------------------------------------
001 Mary History
Holly 9002
003 John 9003 Math

似乎是因为表 gSubject 中没有对象 002 的 object_id,它用空值覆盖了结果中的 object_id。

即对于对象 002,在第一遍(对象表)中等于 002,然后在第二遍(gPeople 表)中再次用 002 覆盖,然后在第三遍(gVip 表)中再次用 002 覆盖,然后在最后一遍中( gTeachers 表)它被 null 覆盖,因为表中没有它的记录。

关于mySQL NATURAL JOIN 显示类似于 LEFT OUTER JOIN 的结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13617394/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com