我有一些查找表,我不想加入,但我仍然希望字段值。
TABLES
表1
ID Value LookupID
1 1 1
2 2 2
表2
LookupID Result
1 Yes
2 No
我想做点什么
SELECT ID, Value, (if LoopupID =1, yes if =2 no)
FROM Table1
而不是加入。我以前做过这个,但我不记得我用来实现这个的命令/语法。我试图避免使用连接,因为它使查询运行时间显着延长。字符串中只需要放置3-4个值,因此难以硬编码到查询中。
答案 0 :(得分:2)
试试这个:
SELECT ID, Value, case when LoopupID =1 then 'yes' else 'no' end as result
FROM Table1
答案 1 :(得分:1)
在这里添加更多信息...... case语法也适用于三个或更多值。 此外,您可以使用“as”命名结果列 并且该名称将在case子句中的“end”之后。
像这样:
case
when LookupID = 1 then 'Yes'
when LookupID = 2 then 'Maybe'
else 'No'
end as YesNoMaybeColumn1
请注意,您可能不希望在“then”的值内部执行任何子查询,因为这可能不会很好。它可能会得到优化 - 你可以尝试一下,看看你得到了什么。
你的联接起步不快的原因可能是由于表没有正确设置方便的索引。如果索引是正确的,这样的查找表连接通常应该非常快。
答案 2 :(得分:0)
试
SELECT t1.ID, t1.Value, t2.Result FROM Table1 t1, Table2 t2
WHERE t1.LookupID = t2.LookupID
ORDER BY t1.ID