SQL where 子句选择特定数据
SQL where clause selecting specific data
在 Microsoft SQL 中,我正在尝试 select 来自 table 的特定结果(如果可用)。否则,应检索其他数据。
给出场景tableA包含各种水果。我想收集红色的苹果,否则,应检索除红色以外的任何其他颜色。
我不确定使用哪种方法,是使用 Case 语句还是在 where 子句中使用 EXISTS。我尝试了两种方法,但没有达到预期的效果。
select *
from tableA
where fruit = 'apple'
and color = case when color = 'red' then
'red'
else color <> 'red'
end
根据一些初步评论,详细说明现有问题,
如果将其放入 If else 逻辑中,它将是
如果有红苹果,则检索红苹果,否则检索除红色以外的任何其他颜色。
不清楚 except for EA
是什么意思。
我的解释是,您想要 fruit = 'apple' and color = 'red'
处的所有行,但如果没有这样的行,return 所有苹果 (如 none它们是红色的)?
我会使用 IF
条件来避免不必要地读取 table。
SELECT *
INTO #temp
FROM your_table
WHERE fruit = 'apple' AND color = 'red'
IF @@rowcount = 0
SELECT *
FROM your_table
WHERE fruit = 'apple'
ELSE
SELECT *
FROM #temp
DROP TABLE #temp
演示:https://dbfiddle.uk/?rdbms=sqlserver_2019&fiddle=b9ce49d1934c149f787c7317f3186656
在 Microsoft SQL 中,我正在尝试 select 来自 table 的特定结果(如果可用)。否则,应检索其他数据。
给出场景tableA包含各种水果。我想收集红色的苹果,否则,应检索除红色以外的任何其他颜色。
我不确定使用哪种方法,是使用 Case 语句还是在 where 子句中使用 EXISTS。我尝试了两种方法,但没有达到预期的效果。
select *
from tableA
where fruit = 'apple'
and color = case when color = 'red' then
'red'
else color <> 'red'
end
根据一些初步评论,详细说明现有问题,
如果将其放入 If else 逻辑中,它将是
如果有红苹果,则检索红苹果,否则检索除红色以外的任何其他颜色。
不清楚 except for EA
是什么意思。
我的解释是,您想要 fruit = 'apple' and color = 'red'
处的所有行,但如果没有这样的行,return 所有苹果 (如 none它们是红色的)?
我会使用 IF
条件来避免不必要地读取 table。
SELECT *
INTO #temp
FROM your_table
WHERE fruit = 'apple' AND color = 'red'
IF @@rowcount = 0
SELECT *
FROM your_table
WHERE fruit = 'apple'
ELSE
SELECT *
FROM #temp
DROP TABLE #temp
演示:https://dbfiddle.uk/?rdbms=sqlserver_2019&fiddle=b9ce49d1934c149f787c7317f3186656