gpt4 book ai didi

mysql - 你如何在连接可能来自一个或另一个表的情况下进行 mysql 连接

转载 作者:行者123 更新时间:2023-11-29 05:40:05 25 4
gpt4 key购买 nike

这是我用来将成员名称与 ID 匹配的查询。

SELECT eve_member_list.`characterID` ,eve_member_list.`name` 
FROM `eve_mining_op_members`
INNER JOIN eve_member_list ON eve_mining_op_members.characterID = eve_member_list.characterID
WHERE op_id = '20110821105414-741653460';

我的问题是我有两个不同的成员列表,一个列表是属于我们组的成员,第二个列表是不属于我们组的成员列表。

我该如何编写此查询,以便如果在 eve_member_list 表中找不到成员,它将在 eve_nonmember_member_list 表中查找以匹配 eve_mining_op_members。 characterIDcharName

如果这个问题难以理解,我提前道歉,因为我不太确定如何正确地询问我正在寻找的是什么。

最佳答案

将您的 INNER JOIN 更改为 LEFT JOIN 并加入两个表。如果名称出现在第一个表中,请使用 IFNULL 选择名称,但如果它是 NULL(因为未找到匹配项),则它将使用从第二个表中找到的值表。

SELECT
characterID,
IFNULL(eve_member_list.name, eve_nonmember_member_list.charName) AS name
FROM eve_mining_op_members
LEFT JOIN eve_member_list USING (characterID)
LEFT JOIN eve_nonmember_member_list USING (characterID)
WHERE op_id = '20110821105414-741653460';

如果您可以控制数据库设计,您还应该考虑是否可以重新设计您的数据库,以便成员和非成员都存储在同一个表中。例如,您可以使用 bool 值来指定它们是否是成员。或者您可以创建一个 person 表,并将仅与成员相关的信息存储在一个单独的 memberinfo 表中,该表具有来自 person 的可为空的外键> 表到 memberinfo 表。这将使与成员(member)和非成员(member)相关的查询更容易编写和执行得更好。

关于mysql - 你如何在连接可能来自一个或另一个表的情况下进行 mysql 连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7397577/

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