请解释这两个查询的区别以及它们正在做什么

时间:2016-01-09 21:03:53

标签: mysql sql select

A)

 Select HotelID, HotelName, ParkingSpaces, cityID
 from hotels as xyz
 where ParkingSpaces > (Select avg(ParkingSpaces)
                        from Hotels
                        where cityID = xyz.cityID);

b)中

 select HotelName, ParkingSpaces, cityid
 from Hotels
 where ParkingSpaces > (Select avg(ParkingSpaces)
                        from Hotels);

2 个答案:

答案 0 :(得分:2)

第一个查询在外部查询和子查询之间进行关联,并返回超过该城市平均停车位数的酒店的详细信息。

第二个查询没有这样的相关性,并返回超过平均停车位数的酒店的详细信息,无论是哪个城市。

答案 1 :(得分:1)

两个查询都在选择(略有不同)有关超过平均停车位数的酒店的信息。

首先是检查同一城市的酒店平均停车位数。奇怪的事实是,如果有一个城市有一个酒店记录,该酒店将不会被列出。它使用相关的子查询,这就是表别名xyzFROM Hotels AS xyz)和使用它的子查询中的连接条件的原因。

第二是检查所有已知酒店的平均停车位数,无论是哪个城市。