gpt4 book ai didi

mysql - 选择值中的字段(如果值中的字段不存在则返回为空)

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

我想在 where 子句中选择一个数据。假设我有 $values: 1,2,3,4

然后我想从该值的表中选择行。

  SELECT `date` from another_table where id in (1,2,3,4)

如果 another_table 只有 id 为 1,2 和 3 的行,则表示 id 为 4 的行不存在。我希望通过返回 null 或 nol 或 NEVER 仍选择 4 的 id。

      another_table
-------+-------------+
| id | date |
----------------------
1 Yesterday
2 Today
3 Tomorow
5 Today

预期的结果是

     -------+-------------+
| id | date |
----------------------
1 Yesterday
2 Today
3 Tomorow
4 Never

如何做到这一点?

提前致谢

最佳答案

作为一种选择,使用内联 View 作为行源,并执行外部连接操作。我们可以使用 IF 表达式来检查是否从 another_table 返回匹配行,我们知道如果有匹配行,id 值将不会为 NULL,连接谓词(在 ON 子句中)向我们保证。)

举个例子:

SELECT n.id
, IF(a.id IS NULL,'Never',a.date) AS `date`
FROM ( SELECT 1 AS id
UNION ALL SELECT 2
UNION ALL SELECT 3
UNION ALL SELECT 4
) n
LEFT
JOIN another_table a
ON a.id = n.id
ORDER BY n.id

执行内联 View 查询,并将结果物化到一个临时表(MySQL 称它为派生表)。当外部查询运行时,n 实际上是一个包含 4 行的表。

显然,如果必须更改 id 值列表,您需要更改 View 定义。内联 View 的 SQL 文本可以从数组中用编程语言从数组中动态生成。

对于大量的值,内联 View 变得笨拙,你会从表中获得更好的性能,而不是 View 。

关于mysql - 选择值中的字段(如果值中的字段不存在则返回为空),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30180990/

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