gpt4 book ai didi

mysql - 在SQL中显示两个表的列不为空

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

我想连接两个表并从两列中选择第一列(如果它不为空),如果第一列为空,则选择另一列。举个例子,假设我们有下表:

names                                    companies_to_names
-------------------------------- -----------------------------
|id_name | name | nickname | | id | id_name | id_company |
-------------------------------- -----------------------------
| 1 | NULL | manu | | 1 | 1 | 1 |
| 2 | Joe A. | NULL | | 2 | 2 | 1 |
| 3 | Bob B. | NULL | | 3 | 3 | 1 |
| 4 | NULL | alice | | 4 | 4 | 1 |
| 5 | NULL | other | | 5 | 5 | 2 |
-------------------------------- -----------------------------

我们想要显示 id=1 公司工作人员的姓名或昵称。然后,我想要以下结果:

--------------------
|id_name | username|
--------------------
| 1 | manu |
| 2 | Joe A. |
| 3 | Bob B. |
| 4 | alice |
--------------------

我在 SELECT CASE WHEN 中思考,但我不知道该怎么做。类似于:

SELECT NAMES.id_name CASE username
WHEN NAMES.name IS NULL THEN NAMES.nickname
WHEN NAMES.name IS NOT NULL THEN NAMES.name
END
FROM NAMES INNER JOIN COMPANIES_TO_NAMES ON NAMES.id_name = COMPANIES_TO_NAMES.id_name;

我说得对吗?

最佳答案

这是一个向您展示如何解决问题的查询:

SELECT N.id_name
,IFNULL(N.name, N.nickname) AS [username]
,CASE
WHEN N.name IS NOT NULL THEN 'name'
ELSE 'nickname'
END AS [username_source]
FROM NAMES N
INNER JOIN companies_to_names C ON C.id_name = N.id_name
AND C.id = 1

希望这对您有帮助。

关于mysql - 在SQL中显示两个表的列不为空,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25662474/

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