查询时这是非法的情况吗?查询返回语法错误时的MySQL情况
它返回一个错误,告诉我检查在votes >= (SELECT FLOOR((COUNT(*)/(2 + 1)) + 1) threshold FROM votes) level T
附近使用的正确语法。我在MySQL 5.0.83上运行我的数据库。
SELECT CASE WHEN (
SELECT vote_candidate, MAX(votes_above_the_threshold) votes
FROM (
SELECT vote_candidate vote_candidate, COUNT(*) votes_above_the_threshold
FROM vote_orders
WHERE vote_order = 1
GROUP BY vote_candidate
HAVING votes_above_the_threshold >= (
SELECT FLOOR((COUNT(*)/(2 + 1)) + 1) threshold
FROM votes
)
) t
WHERE votes_above_the_threshold = (
SELECT MAX(votes_above_the_threshold)
FROM vote_orders
)
) votes >= (
SELECT FLOOR((COUNT(*)/(2 + 1)) + 1) threshold
FROM votes
) level
THEN (level - original_votes)
ELSE 0
END redistribution
显然,这给了一个新的错误:“每一个派生表必须有它自己的别名:......”我试图让最后的选择(SELECT FLOOR ...)的名u,然后我回到了初始错误... –
其实 - 这真的是对的。我错过了一些括号,但现在它返回我想要的值。非常感谢你。 :) –