2017-05-21 49 views
0

我有一個從贏得比賽和比賽場次排行榜計算排名的SQL代碼:爲什麼這個SQL代碼拋出錯誤

SELECT count(1) 
FROM `account` 
WHERE points < SELECT points FROM (SELECT `display name`, 3*`wins`-`matches played` AS points FROM `account`) AS T WHERE `display name` = "valaki" 

如果我改變點勝不平等的左側部分工作或任何現有字段,它的左側部分也可以工作,但代碼不起作用。

+0

什麼是錯誤信息? –

回答

1

您需要的括號子查詢:

SELECT count(1) 
FROM account a 
WHERE a.points < (SELECT 3*a2.wins-a2.matchesplayed AS points 
        FROM account a2 
        WHERE a2.displayname = 'valaki' 
       ); 

此外,你指的是列作爲matches playeddiplay name。這是不正確的。您需要帶空格的列名稱周圍的轉義字符。我的建議是修復列名,所以他們不需要轉義。

我還添加了表別名。這是一個好習慣。如果查詢引用多個表或者有多個FROM子句,它們應該是強制性的。

相關問題