2016-10-23 41 views
1

我想知道是否有辦法讓這項工作。我推導出一張表「WHERE lie_start ='green'」(以及其他一些我不想重複的條件),需要將該數字(以及其他一些信息)關閉。 此外,我需要具有附加條件lie_finish ='holed'的條目數。目前我開始報錯:表mydb.x不存在。select語句中的子查詢無法找到派生表?

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 

回答

1

您需要重複表名稱。表的別名不能被識別:

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';