gpt4 book ai didi

mysql - 将 2 个具有 2 个结果的选择查询连接到一个具有 1 个结果的查询中?

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

我试图完成的是我想从 tableA 中选择一行,从 tableB 中选择一行,然后合并结果(列名称不同)。

tableA的布局是这样的:

+----------------------------+--------------+------+-----+---------------------+----------------+
| Field | Type | Null | Key | Default | Extra |
+----------------------------+--------------+------+-----+---------------------+----------------+
| user_id | int(11) | NO | PRI | NULL | auto_increment |
| nickname | varchar(32) | NO | | NULL | |
| password | varchar(129) | NO | | NULL | |
| mafia_id | int(11) | NO | | 0 | |
+----------------------------+--------------+------+-----+---------------------+----------------+

tableB 是这样的:

+-------------+-------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+-------------+-------------+------+-----+---------+----------------+
| mafia_id | int(11) | NO | PRI | NULL | auto_increment |
| mafia_name | varchar(32) | NO | | | |
| mafia_tag | varchar(5) | NO | | | |
| mafia_color | int(11) | NO | | 0 | |
| mafia_car | int(11) | NO | | 0 | |
| mafia_base | int(11) | NO | | 0 | |
+-------------+-------------+------+-----+---------+----------------+

我尝试过这样的查询:

SELECT *
FROM users

WHERE users.nickname = 'Gamer_Z'

UNION

SELECT * FROM mafia
WHERE mafia.mafia_id = (
SELECT users.mafia_id
FROM users
WHERE users.nickname = 'Gamer_Z'
);

还有这个:

SELECT *
FROM users
WHERE nickname = 'Gamer_Z'
INNER JOIN mafia ON mafia.mafia_id = users.mafia_id;

但是这些查询给出了错误,我尝试了其他几个,但这些看起来很好?

我也读过这些问题:

How can I join two tables with different number of rows in MySQL?

Combine Multiple Query Results in MySQL (by column)

但我似乎无法解决我的问题。

我想要的输出格式是这样的:

|users.user_id|users.nickname|users.password|users.mafia_id|mafia.mafia_name|mafia.mafia_tag|mafia.mafia_color|mafia.mafia_car|mafia.mafia_base|

如何为我在 MySQL(5) 中尝试完成的任务构建正确的查询?提前致谢!

\编辑::

<小时/>

我差点忘了一件事!如果 mafia_id 在 tableB 中不存在,那么仍然必须返回 tableA 行。 (所以用户不是黑手党,我只是加载默认的用户数据)

最佳答案

您必须将 WHERE 条件放在 JOIN 之后,而不是之前:

SELECT    *
FROM users a
LEFT JOIN mafia b ON a.mafia_id = b.mafia_id
WHERE a.nickname = 'Gamer_Z'

关于mysql - 将 2 个具有 2 个结果的选择查询连接到一个具有 1 个结果的查询中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11811235/

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