mysql - select 语句中的子查询找不到派生表?

标签 mysql sql correlated-subquery derived-table

我想知道是否有办法让这项工作成功。我正在推导出一个表“WHERE lie_start='green'”(以及一些我不想重复的其他条件),需要从中获取数字(和其他一些信息)。 此外,我需要带有附加条件 lie_finish='holed' 的条目数。目前我遇到错误:表 mydb.x 不存在。

SELECT 
    COUNT(*) AS total, 
    (SELECT COUNT(*) FROM x WHERE lie_finish='holed') as holed
FROM (SELECT * FROM mydb.strokes WHERE lie_start='green') as x

最佳答案

您需要重复表名。表别名无法识别:

SELECT COUNT(*) AS total, 
       (SELECT COUNT(*) FROM mydb.strokes WHERE lie_finish='holed') as holed
FROM (SELECT * FROM mydb.strokes WHERE lie_start='green') as x;

然而,这可以更简单地写成:

select count(*) as total, sum(lie_finish = 'holed') as holed
from mydb.strokes s
where lie_start = 'green';

关于mysql - select 语句中的子查询找不到派生表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40204007/

相关文章:

mysql - 无法通过 Windows PowerShell 连接到 MySQL

mysql - 按升序获取最后 5 条记录,无需子查询

mysql - 替代 MySQL LOAD LOCAL INFILE REPLACE 更新表

sql - Oracle 查询使用 Xpath 获取同一节点的逗号分隔列表

sql - 数据库-关系代数自然连接 2 个表包含 2 个相同的列名

mysql - 进行相关子查询的 "Rails way"是什么?

mysql - 获取表中没有 NULL 作为默认值的所有列名的列表?

php - 多个查询不被执行

mysql - 使用 MAX 和 COUNT 从 3 个不同的表生成报告?

MySQL按日期时间关联子查询顺序