gpt4 book ai didi

sql - 如何将 UNION 更改为 IN 子句?

转载 作者:行者123 更新时间:2023-12-02 22:45:43 24 4
gpt4 key购买 nike

我需要从同一个表中获取最多 3 条不同的记录,所以目前我正在做:

SELECT 1, mycolumn FROM mytable WHERE id = @firstId
UNION ALL
SELECT 2, mycolumn FROM mytable WHERE id = @secondId
UNION ALL
SELECT 3, mycolumn FROM mytable WHERE id = @thirdId

实际的 SELECT 部分包含 20 多列,FROM 部分包含许多 JOIN。第一列是常量,并且始终根据记录而固定。我不知道有多少记录会被返回。它可以是 0 到 3 条记录之间的任何内容。

是否可以更改上述查询,使其使用 IN,如下所示:

SELECT ???, mycolumn FROM mytable WHERE id IN (@firstId, @secondId, @thirdId)

但是如果我使用 IN,如何显式地将每个记录映射到固定常量?

最佳答案

您可以在此处将 CASE 表达式与单个查询一起使用:

SELECT
CASE id WHEN @firstId THEN 1
WHEN @secondId THEN 2
WHEN @thirdId THEN 3 END AS val,
mycolumn
FROM mytable
WHERE
id IN (@firstId, @secondId, @thirdId);

如果您还希望按计算列排序,请将 ORDER BY val 添加到上述查询的末尾。

关于sql - 如何将 UNION 更改为 IN 子句?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54626241/

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