我怎样才能得到一个结果? SQL: CASE 返回两行
Posted
技术标签:
【中文标题】我怎样才能得到一个结果? SQL: CASE 返回两行【英文标题】:How can I get just one result? SQL: CASE Returns two rows 【发布时间】:2021-03-22 14:24:38 【问题描述】:我有两个用于汽车信息的表格,用于确定他们拥有哪种类型的发动机。因此,我需要第二张表,其中列出了汽车的所有特殊设备。表 1 区分了电池和无电池。使用表 2 中的特殊设备的钥匙,可以识别“无电池”汽车是混合动力汽车还是内燃机汽车。如果他们有特殊设备“ABC”钥匙,他们就是混合动力汽车。如果不是,它们就是燃烧车。
表 1:
> ID |Car |Engine |
> 1 |RED |BATTERY |
> 2 |YELLOW |NO-BATTERY |
> 3 |BLUE |NO-BATTERY |
表 2:
-ID-|SPECIAL EQUIPMENT
1 |AAA
1 |BBB
1 |CCC
2 |ABC
2 |BBB
2 |CCC
3 |ABC
3 |BBB
3 |CCC
SQL 查询是:
SELECT DISTINCT mytable.id, mytable.car, mytable.engine
FROM
(SELECT table1.id, table1.car, table1.engine, table1.type,
CASE WHEN table1.type = 'Battery' THEN 'BEV'
WHEN table1.type = 'No-Battery' THEN (CASE WHEN special Equipment = 'ABC' THEN 'HYBRID'
ELSE 'COMBUSTION' END)
END AS engine
FROM table1
INNER JOIN table 2 key ON table1.id = table2.id
WHERE (cars.id = 2 )
)t;
CAR ID 2 的 SQL 代码返回 --> 2 列,一次是混合动力发动机类型,另一次是燃烧发动机类型。
结果(当前):
> ID |Car |type |engine
> 2 |YELLOW |NO-BATTERY |HYBRID
> 2 |YELLOW |NO- BATTERY |COMBUSTION
我想展示:
> ID |Car |type |engine
> 2 |YELLOW |NO-BATTERY |HYBRID
Combustion 的结果是错误的,但是显示出来了……我怎样才能得到一个正确的回报?
【问题讨论】:
可以内联吗? ***.com/questions/12526194/… 这个方向有什么东西? 【参考方案1】:我认为问题在于你要求
SELECT DISTINCT mytable.id, mytable.car, mytable.engine
当您只想显示不同的 mytable.car 时
在结果中有两个不同的 mytable.engine 显示,因为它们是不同的。
SELECT DISTINCT mytable.car
我对 JQL 了解不多
【讨论】:
【参考方案2】:我想你只是想要exists
:
select t1.*,
(case when exists (select 1
from table2 t2
where t2.id = t1.id and t2.special = 'ABC'
)
then 'Hybrid' else 'Combustion'
end) as engine
from table1 t1;
【讨论】:
以上是关于我怎样才能得到一个结果? SQL: CASE 返回两行的主要内容,如果未能解决你的问题,请参考以下文章