MySQL 多表子查询

标签 mysql sql

我正在尝试使用子查询检索预订伦敦酒店的所有客人的姓名和地址(按姓名字母顺序在 MySQL 中排序)并收到此错误:

Error Code: 1242. Subquery returns more than 1 row

这是我运行的查询:

select * from guest 
where guest_no = 
    (
        select guest_no 
        from booking 
        where hotel_no = (select hotel_no
                          from hotel
                          where city = 'London')
    );

这是酒店、预订和客人的架构:

hotel (hotel_no, hotel_name, city)

booking (hotel_no, guest_no, date_from, date_to, room_no)

guest (guest_no, g_name, g_address)

此外,这是房间的架构:

room (room_no, hotel_no, type, price)

请帮助我解决上述错误和可能的解决方案。

感谢和问候。

最佳答案

为什么不使用 join as

select
g.guest_no,
g.g_name,
g.g_address
from guest g
inner join booking b on b.guest_no = g.guest_no
inner join hotel h on h.hotel_no = b.hotel_no
where h.city = 'London'

关于MySQL 多表子查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23422553/

相关文章:

mysql - 如何对订购产品的每个 user_id 排序并列出前 10 个 order_ids?

java - 将数据发送到 php 脚本并通过 android 保存在 mysql 表中时,加号变为空格

sql - 编写查询以从集合中获取最新项目的最有效方法是什么?

sql - 获取所有符合指定条件的json对象

SQL - 说明 - ISNULL()

c# - 如何从表适配器获取正在执行的 SQL 查询?

php - Laravel:如何设置带有条件的自定义列?

java - Android Java POST 数据

php - yii 在查询后分配动态属性

sql - PostgreSQL 更新的行多于 where 条件?