SUbquery 相关

问题描述 投票:0回答:3

我正在尝试执行相关的子查询,但没有得到正确的答案。我尝试查询“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');
sql subquery correlated-subquery
3个回答
0
投票

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

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

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

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

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

唯一的变化是将

=
替换为
IN
并向子查询添加
DISTINCT


0
投票

你可以这样写:

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

这将选择 type='suv' 的汽车和 BMW 制造的车辆的所有详细信息。


0
投票

你可以这样写:

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

这将准确选择 type='suv' 的汽车和 BMW 制造的车辆的所有详细信息。

© www.soinside.com 2019 - 2024. All rights reserved.