gpt4 book ai didi

sql - 保留来自 SQL 'IN' 运算符的值

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

如何修改查询

SELECT field1, field2 FROM table1 WHERE field1 IN ('value1', 'value2', 'value3');

获取 NULL字段 2 如果找不到“value2”?

表1:
field1 | field2
-------+--------
value1 | result1
value3 | result3
value4 | result4

当前输出:
field1 | field2
-------+--------
value1 | result1
value3 | result3

预期输出:
field1 | field2
-------+-------
value1 | result1
value2 | NULL
value3 | result3

最佳答案

对包含“完整输出集”的表使用 LEFT JOIN。 IN子句(实际上, WHERE 中的任何条件)只能过滤/删除结果:它永远不会添加新记录。

取决于 SQL 的风格;一个例子:

SELECT
fullSet.field1,
t.field2
FROM (SELECT 'value1' as field1 -- set of rows value1..4
UNION ALL
SELECT 'value2'
UNION ALL
SELECT 'value3'
UNION ALL
SELECT 'value4') fullSet
LEFT JOIN table1 t -- join to access t.field2 (null if no match)
ON t.field1 = fullSet.field1
WHERE t.field1 IN ('value1', 'value2', 'value3'); -- filtered value4

不同的 SQL 方言可以提供更方便的方法来构建整个结果集空间(例如 SQL Server 中的 CTE)。

关于sql - 保留来自 SQL 'IN' 运算符的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44470130/

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