我找不到办法做到这一点,我不知道如何搜索这个问题,因为我发现的并不是我想要的,答案也不适用。
我有一个包含两个字段(char和num)的表,'num'是唯一的,但'char'不是,如示例所示:
char | num
_________
a | 2
b | 1
c | 3
c | 4 <-- I am here
c | 7
c | 8
d | 5
e | 9
f | 6
我想要的是从标有“char”排序的表的行开始获取N行。
我正在使用
SELECT * FROM table WHERE char >= $current_char ORDER BY char,num LIMIT $N
但它没有做我想要的,因为它从char ='c'和num ='3'的行开始。
编辑:我可能会计算并使用xdazz的答案,因为代码会更清晰,但看起来我可以通过其他方式执行此操作:
SELECT * FROM table WHERE char > $current_char OR (char = $current_char AND num >= $current_num) ORDER BY char,num LIMIT $N
但它不是很漂亮。
答案 0 :(得分:2)
您标记<-- I am here
表示您知道这是第四条记录,因此您可以这样做:
SELECT * FROM table ORDER BY char,num LIMIT 4, $N
答案 1 :(得分:0)
你使用了where char >= current_char
,但你说它们不是唯一的,它可以是第5行或第6行,而是使用唯一的行
像那样
SELECT * FROM table WHERE num >= $current_num ORDER BY char LIMIT $N
你不能说char&gt; somechar
答案 2 :(得分:0)
根本问题在于您没有描述您的选择标准。
您已指出要从标记为<-- I am here
的记录开始,但您尚未定义该记录与任何其他记录的区别。
一旦您可以定义该记录的特殊内容以及您希望从那里开始的原因,此处的某人将能够帮助您编写查询以查找该记录。否则,我们都只是在猜测。