mysql对另一个表上的所有行执行相同的计算
我已确定我的问题:mysql对另一个表上的所有行执行相同的计算,mysql,Mysql,我已确定我的问题: SELECT * FROM `participation` LEFT JOIN parties ON parties.id = participation.party_id WHERE `riding_id` = 10001 AND `election_id` = 41 ORDER BY num_votes DESC LIMIT 1 这准确地产生了我想要的结果 结果是该党的得票最多 现在我想对表的每一行执行相同的查询ridings 其中包含所有骑行id行。有点
SELECT *
FROM `participation`
LEFT JOIN parties ON parties.id = participation.party_id
WHERE `riding_id` = 10001
AND `election_id` = 41
ORDER BY num_votes DESC
LIMIT 1
这准确地产生了我想要的结果
结果是该党的得票最多
现在我想对表的每一行执行相同的查询ridings 其中包含所有
骑行id
行。有点麻烦
我不想联接另一个表,但要遍历每一行,并在每一行上执行与上面相同的计算
比如:
SELECT *
FROM `participation`
LEFT JOIN parties ON parties.id = participation.party_id
WHERE `riding_id` = "LOOP ALL riding_id IN ridings TABLE"
AND `election_id` = 41
ORDER BY num_votes DESC
LIMIT 1
任何帮助都将不胜感激。只需使用子查询即可:
SELECT *
FROM participation LEFT JOIN
parties
ON parties.id = participation.party_id
WHERE riding_id IN (SELECT riding_id FROM ridings) AND
election_id = 41
ORDER BY num_votes DESC
但是,你不再是最能赢得选票的人。你得到了一切
下面是一种使用变量的方法,它可以为每个骑行id
获得最高票:
SELECT *
FROM (SELECT *,
(@rn := if(@r = riding_id, @rn + 1,
if(@rn := riding_id, 1, 1)
)
) as seqnum
FROM participation LEFT JOIN
parties
ON parties.id = participation.party_id CROSS JOIN
(SELECT @rn := 0, @r := -1) params
WHERE riding_id IN (SELECT riding_id FROM ridings) AND
election_id = 41
ORDER BY riding_id, num_votes DESC
) pp
WHERE seqnum = 1;
仅使用子查询很有诱惑力:
SELECT *
FROM participation LEFT JOIN
parties
ON parties.id = participation.party_id
WHERE riding_id IN (SELECT riding_id FROM ridings) AND
election_id = 41
ORDER BY num_votes DESC
但是,你不再是最能赢得选票的人。你得到了一切
下面是一种使用变量的方法,它可以为每个骑行id
获得最高票:
SELECT *
FROM (SELECT *,
(@rn := if(@r = riding_id, @rn + 1,
if(@rn := riding_id, 1, 1)
)
) as seqnum
FROM participation LEFT JOIN
parties
ON parties.id = participation.party_id CROSS JOIN
(SELECT @rn := 0, @r := -1) params
WHERE riding_id IN (SELECT riding_id FROM ridings) AND
election_id = 41
ORDER BY riding_id, num_votes DESC
) pp
WHERE seqnum = 1;
谢谢Gordon-在第二个查询中-我得到错误“重复的列名'id'”,但我只看到一次对“id”的引用?@kreevp。这是因为
选择*
。实际上,你应该只列出你想要的列。谢谢戈登-在第二次查询中-我得到错误“重复的列名'id'”,但我只看到一次对“id”的引用?@kreevp。这是因为选择*
。实际上,您应该只列出所需的列。