gpt4 book ai didi

mysql - 通过 CASE 语句选择多个值?

转载 作者:可可西里 更新时间:2023-11-01 06:37:59 25 4
gpt4 key购买 nike

我有一个 Vehicle 表,其中有一个 Owner_ID 字段。此 Owner_ID 将对应于客户表中的 ID 字段或业务表中的 ID 字段。我希望根据 ID 所属的表返回不同的值。

我有这个声明:

SELECT v.Make, v.Model
FROM Vehicle v
LEFT JOIN Customer c ON c.ID = v.Owner_ID
LEFT JOIN Business b ON b.ID = v.Owner_ID

假设我想在 Owner_ID = Customer.ID 时返回客户姓氏,在 Owner_ID = Business_ID 时返回公司名称。我知道我可以这样使用 CASE 语句:

SELECT v.Make, v.Model,
CASE WHEN c.ID IS NOT NULL THEN c.Surname
WHEN b.ID IS NOT NULL THEN b.Name

但是有没有办法从一个 case 语句中获取多个值呢?类似于:(顺便说一句,我知道这是完全错误的。)

SELECT v.Make, v.Model,
CASE WHEN c.ID IS NOT NULL THEN
SELECT c.Surname, c.Date_Of_Birth
WHEN b.ID IS NOT NULL THEN
SELECT b.Name, b.Founded

或者我将不得不做:

SELECT v.Make, v.Model,
CASE WHEN c.ID IS NOT NULL THEN c.Surname
WHEN b.ID IS NOT NULL THEN b.Name
END AS "Name",
CASE WHEN c.ID IS NOT NULL THEN c.Date_Of_Birth
WHEN b.ID IS NOT NULL THEN b.Founded
END AS "DOB/Founded"

最佳答案

不,没有办法让 case 表达式的分支跨越多列。

在您的示例中,您可以这样做

SELECT v.Make,
v.Model,
MAX(COALESCE(c.Surname, b.name)) as name
FROM Vehicle v
LEFT JOIN Customer c
ON c.ID = v.Owner_ID
LEFT JOIN Business b
ON b.ID = v.Owner_ID
GROUP BY v.Owner_ID

关于mysql - 通过 CASE 语句选择多个值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5244024/

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