【问题标题】:Unable to use column into sub query - MySQL Database无法将列用于子查询 - MySQL 数据库
【发布时间】:2016-11-06 23:44:11
【问题描述】:

我无法将此“enquiries.enquiry_id”列用于子查询。我也尝试过使用表的别名,但没有成功 错误代码:1054。“where 子句”中的未知列“enquiries.enquiry_id”

我们可以使用其他方式吗?

Tables
------------------------------
Enquiries
------------------------------
enquiry_id | name 
1            A
2            B
3            C
4            D
------------------------------
Bookings
------------------------------
booking_id | name |enquiry_id 
1            A      1
2            B      2
3            C      2   
4            D      3
------------------------------


SELECT 
    (SELECT 
            COUNT(*)
        FROM
            (SELECT 
                booking_id
            FROM
                bookings
            WHERE
                enquiry_id = enquiries.enquiry_id) AS t) AS total
FROM
    enquiries
WHERE
    enquiry_id = 2

【问题讨论】:

  • 问题是你使用了太多的子查询。第一个子查询可以知道查询,但第二个深度不知道
  • 这不是实际查询,它只是示例,但我希望在实际查询中使用相同的逻辑

标签: mysql sql


【解决方案1】:

我认为您的查询可以简化为

SELECT COUNT(e.booking_id) as total
FROM  enquiries e
WHERE e.enquiry_id = 2

或者如果您需要来自booking的其他东西

SELECT COUNT(b.booking_id)  as total
FROM  bookings b
JOIN  enquiries e
  ON b.enquiry_id = e.enquiry_id 
WHERE e.enquiry_id = 2

并向您展示如何修复您的查询。

SELECT 
        (SELECT COUNT(*)
         FROM  bookings b
         WHERE b.enquiry_id = e.enquiry_id) AS total            
FROM
    enquiries e
WHERE
    enquiry_id = 2

【讨论】:

  • 感谢您的帖子,我在实际查询中执行了与上述相同的逻辑,但根据我的要求计算错误。我想要多表列计算。
  • 感谢您的帖子,我在实际查询中执行了与上述相同的逻辑,但根据我的要求计算错误。我想要多表列计算。
  • 在 rextester.com 中提供一个完整的示例并提供预期的输出,也许我们可以更好地帮助您
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-10-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多