繁体   English   中英

子查询相关

[英]SUbquery correlated

我正在尝试做一个相关的子查询,但没有得到正确的答案。 我试过查询“suv”车辆,在这辆 suv 车辆中,我想要宝马制造的车辆,但我得到的所有车辆都是 SUV。 我应该怎么办?

-- create a table
CREATE TABLE Cars (
  id INTEGER PRIMARY KEY,
  CarName varchar(50),
  vehicle_type varchar(50),
  Automaker varchar(50),
  Price INTEGER 
  
);
-- insert some values
INSERT INTO Cars VALUES 
(1, 'BMW X6',  'SUV','BMW', 108200),
(2, 'BMW X6',  'SUV','BMW',88200),
(3,'Grand Cherokee','SUV','JEEP' ,21678),
(4,'Grand Cherokee','SUV','JEEP' , 24518),
(5,'Grand Cherokee','SUV','JEEP' , 27548),
(6,'BMW 320','Sedan','BMW' , 54518),
(7,'AUDI A8','Sedan','AUDI' , 64518);

SELECT * FROM Cars WHERE vehicle_type =  (SELECT vehicle_type from Cars WHERE Automaker = 'BMW');

所问的问题不太有意义,因为可以编写底部的代码以使其更简单......不需要子查询:

SELECT * 
FROM Cars 
WHERE vehicle_type = 'SUV' AND Automaker = 'BMW';

为了让它更有趣,让我们假设您想要获得与 BMW 制造的任何汽车相同类型的所有汽车。 在本例中,我们看到 BMW 生产 SUV 和轿车,因此我们希望获得所有这些,但我们希望“BMW”作为查询的唯一输入。

我选择了它,因为它更接近于原始查询。 我认为如果你看到这段代码实际上在做什么,它会帮助你学习。 但是,我们确实需要两个调整:

SELECT * 
FROM Cars 
WHERE vehicle_type IN  (SELECT DISTINCT vehicle_type from Cars WHERE Automaker = 'BMW');

唯一的变化是用IN替换=并向子查询添加DISTINCT

你可以这样写:-

SELECT * FROM Cars WHERE vehicle_type = 'SUV' and Automaker='BMW';

这是给出类型='suv'的汽车表和宝马制造的车辆的所有详细信息

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM