首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >选择具有定义值的特定字段的SQL

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

Stack Overflow用户
提问于 2014-02-12 13:04:54
回答 3查看 71关注 0票数 0

我有一些查找表,我不想对这些表执行联接,但我仍然希望字段值。

表格

Table1

代码语言:javascript
复制
ID       Value     LookupID
1         1         1
2         2         2

Table2

代码语言:javascript
复制
LookupID      Result
 1             Yes
 2              No

我想做这样的事

代码语言:javascript
复制
SELECT ID, Value, (if LoopupID =1, yes if =2 no)
FROM Table1

而不是加入。我以前已经这样做过,但是我不记得我用什么命令/语法来实现这一点。我试图避免使用join,因为它会使查询运行的时间大大延长。只有3-4个值需要放在字符串中,所以硬代码进入查询并不困难。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2014-02-12 13:12:21

试试这个:

代码语言:javascript
复制
 SELECT ID, Value, case when LoopupID =1 then 'yes' else 'no' end as result
FROM Table1
票数 2
EN

Stack Overflow用户

发布于 2014-02-12 17:30:37

只是在这里增加一些信息..。case语法也适用于三个或更多个值。此外,还可以用"as“命名结果列,该名称将在case子句中的"end”之后。

如下所示:

代码语言:javascript
复制
case 
when LookupID = 1 then 'Yes' 
when LookupID = 2 then 'Maybe'
else 'No'
end as YesNoMaybeColumn1

请注意,您可能不希望在“那时”的值中执行任何子查询,因为这可能不会很好地执行。不过,它可能会被优化--你可以试一试,看看结果是什么。

但是,您的连接开始时不快的原因可能是表没有正确设置索引。如果索引正确的话,像这样的查找表联接通常应该是非常快的。

票数 1
EN

Stack Overflow用户

发布于 2014-02-12 13:21:07

试一试

代码语言:javascript
复制
SELECT t1.ID, t1.Value, t2.Result FROM Table1 t1, Table2 t2
WHERE t1.LookupID = t2.LookupID 
ORDER BY t1.ID
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21728797

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档