gpt4 book ai didi

sql - 执行相同的查询两次,但使用单个不同的 WHERE 子句

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

请原谅我的问题太简单了,我脑子里放屁了:

这是我的表架构:

Foo( FooId, BarDate dateTime, Baz int )

鉴于此查询

SELECT
MAX( Foo.BarData )
FROM
Foo
WHERE
Foo.Baz = 2
AND
Foo.BarData < @dateParameter

在某些情况下,此查询会返回 NULL,因为没有满足条件的行,在这些情况下,我希望查询返回相同的值,除非 Foo.Baz = 0.

我可以用两个子查询来做到这一点,但这似乎是一种黑客行为。难道就没有更好的办法了吗?

SELECT
COALESCE( Attempt1.BarData, Attempt2.BarData )
FROM
(
SELECT
MAX( Foo.BarData ) As BarData
FROM
Foo
WHERE
Foo.Baz = 2
AND
Foo.BarData < @dateParameter
) As Attempt1
OUTER JOIN
(
SELECT
MAX( Foo.BarData ) As BarData
FROM
Foo
WHERE
Foo.Baz = 0
AND
Foo.BarData < @dateParameter
) As Attempt2 ON 1 = 1

最佳答案

只需选择两行并将结果限制为 1 行,按顺序将首选行排在前面

SELECT TOP 1
MAX( Foo.BarData )
FROM
Foo
WHERE
((Foo.Baz = 2) OR
(Foo.Baz = 0))
AND
Foo.BarData < @dateParameter
GROUP BY Foo.Baz
ORDER BY Foo.Baz DESC

关于sql - 执行相同的查询两次,但使用单个不同的 WHERE 子句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23966467/

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