我需要比较具有多个值的列,但需要按特定顺序进行比较。
例如:如果值为AA,BB,CC,DD。
我的查询应该是这样,它首先将AA与第一列比较,而不是BB,CC和DD。
这是我的查询,假设CASE WHEN ELSE按指定的顺序执行WHEN条件:
SELECT RegionID FROM WotifRegions WHERE SiteID = @SiteID AND
1 = CASE
WHEN LocationName = @DepotCity THEN 1
WHEN LocationName = @DepotName THEN 1
WHEN LocationName = @LocationCity THEN 1
WHEN LocationName = @LocationName THEN 1
ELSE 0
END
如果错了,请告诉我,有更好的方法。 仅供参考:它是一张小桌子。
答案 0 :(得分:2)
您也可以这样做:
SELECT RegionID FROM WotifRegions WHERE SiteID = @SiteID AND
(LocationName = @DepotCity or
LocationName = @DepotName or
LocationName = @LocationCity or
LocationName = @LocationName)
或者它只是具有多个值的一个字段:
SELECT RegionID FROM WotifRegions WHERE SiteID = @SiteID AND
LocationName in (@DepotCity, @DepotName, @LocationCity, @LocationName)
如果您实际上也意味着按顺序对数据进行排序,那么就像这样:
SELECT RegionID FROM WotifRegions
WHERE SiteID = @SiteID AND
LocationName in (@DepotCity, @DepotName, @LocationCity, @LocationName)
order by CASE
WHEN LocationName = @DepotCity THEN 1
WHEN LocationName = @DepotName THEN 2
WHEN LocationName = @LocationCity THEN 3
WHEN LocationName = @LocationName THEN 4
ELSE 5 end
如果您只需要第一个,那么添加“前1”。