我有两个表,用于汽车信息识别他们有哪种类型的引擎。因此,我需要第二张桌子,上面列出了这辆车的所有特殊设备。表1区分了电池和无电池.用table2以外的专用设备的钥匙,可以识别“无电池”汽车是混合动力车还是内燃机汽车。如果他们有特殊的设备"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;
SQL代码返回汽车ID 2->2列,一次用于发动机型混合式,一次用于发动机类型燃烧。
结果(目前):
> ID |Car |type |engine
> 2 |YELLOW |NO-BATTERY |HYBRID
> 2 |YELLOW |NO- BATTERY |COMBUSTION
我想展示:
> ID |Car |type |engine
> 2 |YELLOW |NO-BATTERY |HYBRID
燃烧的结果是错误的,但显示.我怎么才能得到正确的回报呢?
发布于 2020-12-11 14:00:19
我想你只是想要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;
发布于 2020-12-11 06:53:11
我认为问题是你在要求
SELECT DISTINCT mytable.id, mytable.car, mytable.engine
当您只想显示不同的mytable.car时
在结果中,有两个不同的mytable.engine显示,它显示的是两个不同的结果。
SELECT DISTINCT mytable.car
我对JQL不太了解
https://stackoverflow.com/questions/65246798
复制相似问题