2011-04-27 68 views
-1

嘿。我想写一个SQL查询的表:没有服务器端脚本的Sql数据库查询

user_1(question_id int, option char(1)); 

在这里,在这个表,我question_id随机排列,并有客户端发送以前question_id到服务器。然后,我需要客户发送的question_id之后的表格中的下一个question_id

我能做到这一点与服务器端脚本,但它可能没有呢?我的意思是直接用sql下一个question_id

样本数据:

4, 'A' 
2, 'B' 
7, 'C' 

回答

1

你无法确定下一个问题。 如果您在未指定任何顺序的情况下查询表,它可能看起来像有一组按行插入时间排序的行。虽然对于小型餐桌来说这是事实,但您不应该依赖它。任何相当数量的记录插入/删除或进行表格分析都可能会改变此订单,最终导致您的订单出错。 如果您没有任何其他列保存顺序来插入数据,则完全不能保证您在选择无顺序子句后立即得到它。

0

如果我理解正确...

SELECT MIN(question_id) FROM user_1 WHERE question_id > (value client sent) 
+0

但question_id是随机排列的。 – codeomnitrix 2011-04-27 14:31:48

+0

用样本数据检查已编辑的问题 – codeomnitrix 2011-04-27 14:36:29

+0

@codeomnitrix - 如果下一个问题不是下一个连续的ID,那么您如何知道它是哪一个?也许你应该添加一个'question_order'字段。 – 2011-04-27 15:00:21

0
select id from question 
where id not in (already asked) 
order by rand() 
limit 0,1 

编辑:看到更新的问题,答案是 - 没办法。你需要一些其他的领域,将设置的问题的顺序,因为没有办法现在就告诉他们在什么样的顺序。

你应该考虑的数据库表以约无序记录集。

+0

嘿不明白。首先我没有以前提出的问题的记录。只是最后一个问题没有别的。也不明白这个查询会做什么? – codeomnitrix 2011-04-27 14:35:27

+0

它将返回随机问题的单个标识(按随机数排序)。你可以放弃'where id not in(...)'这个部分。或者你是否希望使用其他方式的随机化?呃,更新了我的答案。 – 2011-04-27 14:39:02

+0

我想你还没有明白我的问题。请参阅示例数据。其实question_id已经随机化了,所以不需要使用随机函数。我只想从随机排列的问题中得到下一个未使用的问题。 – codeomnitrix 2011-04-27 14:44:14