【发布时间】:2011-10-03 16:45:45
【问题描述】:
我需要根据位置 ID 拉回记录,但我有两个字段可能包含传入条件....
类似的东西
SELECT * FROM tbl
WHERE myVar = locationID
IF LocationID = 0
myVar = location2ID
这是一个“合乎逻辑”的例子……
我觉得我可以的
WHERE myVar = CASE WHEN locationID = 0 THEN location2ID ELSE locationID END
虽然我已经读过 WHERE 子句中的 CASE 应该避免......?为什么?或者这样可以吗? - 无论哪种方式都失败了
WHERE CASE WHEN locationID=0 THEN location2ID=myVAr ELSE locationID=myVar END
也失败了
谢谢
抱歉,小伙子们混淆了 - 并不是说“模棱两可” - 看起来 #2 会做我想要的 - 但是这里要求的澄清是问题......
该表存储两个位置,然后我们调用 CURRENT_LOC 和 ORIGINAL_LOC...在大多数情况下,它们都有数据,但在某些情况下,“东西”没有移动...所以 CURRENT_LOC 为“0”。我的问题是我将传递一个 LOCATION ID,我想要 CURRENT_LOC 匹配的记录,或者如果 CURRENT_LOC=0,那么我还想要 ORIGINAL_LOC...匹配的地方...
这对讨论有帮助吗?我希望。
【问题讨论】:
-
您得到了两个答案,它们对问题的看法略有不同。请消除您的问题的歧义(通过指出当
locationID不为0 时location2ID会发生什么),并接受相关答案。