选择具有相同ID的下一条记录

时间:2013-01-01 14:50:47

标签: mysql sql duplicates

我有一个示例表,其中包含以下行的答案。 id可能是重复的,因为它与基于id的问题表连接(即一个问题可以有多个答案)

answers.id | answers.username | answer | date
   1       |       mikha      | you    | 2013-01-01 00:00:00   
   1       |     maricela     | really | 2013-01-01 00:00:00 
   1       |        guy       | rock   | 2013-01-01 00:00:00

我可以使用“maricela”在答案之后选择所有行的查询吗?

类似于:

SELECT * FROM answers WHERE id = 1 AND answers.username > 'maricela'

但是上面会返回0行,因为上面这样做将按字母顺序选择,而字母按字母顺序排在maricela之前。

是否有任何方法可以逐行选择值?在ID=1USERNAME=mariclea之后排?

3 个答案:

答案 0 :(得分:2)

强烈建议您在答案表中添加唯一ID,并有一个新列用于加入问题表:

question_id |  id | username | answer | date
    1       |   1 | mikha    | you    | 2013-01-01 00:00:00   
    1       |   2 | maricela | really | 2013-01-01 00:00:00 
    1       |   3 | guy      | rock   | 2013-01-01 00:00:00

然后你可以使用:

SELECT * FROM answers WHERE id > (
    SELECT id FROM answer WHERE username = 'maricela' and question_id = 1
)

答案 1 :(得分:0)

在我的脑海中出现了一些东西:如果你的“之后”的概念与时间有关(即在“maricela”之后插入的答案),那么你可以考虑为答案表添加DATE / TIME列。通过这种方式,您可以确保某些答案比其他答案晚一些

答案 2 :(得分:0)

这就是这样做,

SELECT b.* FROM table1 b WHERE b.id> 
(SELECT a.id FROM table1 a WHERE a.username='maricela'
and a.answer_id=1)

Live SQL Demo