gpt4 book ai didi

mysql - 查找两个表中的最大记录

转载 作者:行者123 更新时间:2023-11-29 08:39:43 24 4
gpt4 key购买 nike

我有两个表:

 question(qid int,title varchar(100))

answer(aid int,qid int,vote int,content varchar(4096))

Qid和aid是首要关键。

每个问题都有一些答案,每个答案都有一个投票数。

现在提出一些问题qid,如果问题有一些答案,如何找到每个问题的最大(投票)答案?

例如:

mysql> select * from question;
+-----+-------+
| qid | title |
+-----+-------+
| 1 | abc |
| 2 | efg |
| 3 | hij |
| 4 | mn |
+-----+-------+

mysql> select * from answer;
+-----+------+------+---------+
| aid | qid | vote | content |
+-----+------+------+---------+
| 77 | 3 | 45 | mysql2 |
| 110 | 1 | 95 | good |
| 122 | 1 | 78 | bad |
| 123 | 1 | 34 | bad2 |
| 223 | 2 | 56 | book1 |
| 224 | 2 | 82 | book2 |
+-----+------+------+---------+

现在,给定 qid(1,2),我想找到以下结果:

+-----+------+------+---------+
| aid | qid | vote | content |
+-----+------+------+---------+
| 110 | 1 | 95 | good |
| 224 | 2 | 82 | book2 |
+-----+------+------+---------+

我想要完整的答案记录(包含所有列),而不仅仅是最大(投票)列。

我只想显示每个问题的最佳答案(最高投票答案)。

MySQL 中最好的 SQL 是什么?

谢谢!

<小时/>

2013/1/7更新:

我想显示唯一一个最佳答案(最高投票答案)(如果存在)。 @Brian Hoover 的答案仅在 MySQL 下工作正常。

也许没有一个 SQL 在所有数据库下都能正常工作。

最佳答案

这是一种方法。

SELECT answer.aid, answer.qid, answer.vote, answer.content
FROM answer
JOIN (
SELECT qid, max(vote) vote FROM answer
GROUP BY qid) AS max_answer
ON answer.qid = max_answer.qid AND answer.vote = max_answer.vote
where answer.qid in (1,2)
GROUP BY answer.qid, answer.vote

SQL Fiddle

在这种情况下,平局将被打破,几乎是随机的,因此每个问题 ID 只会显示一条记录,但不能保证在平局的情况下选择的答案将是一致的

关于mysql - 查找两个表中的最大记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14172903/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com