SQL选择具有已定义值的特定字段

时间:2014-02-12 13:04:55

标签: sql syntax

我有一些查找表,我不想加入,但我仍然希望字段值。

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个值,因此难以硬编码到查询中。

3 个答案:

答案 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