2013-07-28 10 views
0

我有一组行(它实际上是过滤和命令MySQL表)。
我也有一组整数,如(5,9,12,67,2,3)我想用作行号。如何使用他们的数字从MySQL表中选择一些行?

问题:使用这些数字从这个集合中获取行的更好方法是什么?

例如:我有一组15行。和数字(1,5,7)。我如何获得第一,第五和第七排?

+0

maybe [this](http://stackoverflow.com/questions/ 2728413 /等同于oracles-rowid-in-mysql)会给你提示..但你为什么在玩rownumber?还有[阅读此](http://stackoverflow.com/a/11130318/1066828) –

+0

@FahimParkar我有一个疯狂的选择算法,应该从给定的行集合中得到N个随机行。由特殊的复杂算法生成的行号,所以我不能使用它的MySQL。 –

+0

你如何获得行集?它只是一个SQL查询还是你还在使用其他编程语言? –

回答

0

尝试使用此代码 SELECT * FROM(SELECT *,@rowid:= @ ROWID + 1 ROWID FROM表,(SELECT @rowid: = 0)as init WHERE ... order by ...)t其中t.rowid in(...数字集合...)

0

对不起,我只是烧焦了,不知道的好习惯回答,所以我会试试这个:

如果你AUTO_INCREMENT索引使用?

如果没有,你可以像

SELECT @currentRow := @currentRow + 1 AS row_number, * 
FROM table, (SELECT @currentRow:=0) as init 
WHERE row_number IN 1,5,7 

任意数量(东西是错误的WHERE)

是的,我想通了,但@Epsiloncool seemd做快得多。

三重选择帮助您获得其中:

SELECT * FROM 
(SELECT *, @currentRow := @currentRow + 1 AS row_number 
    FROM table t, (SELECT @currentRow := 0) AS init) AS table 
WHERE cdees.row_number IN 1,5,7 
+0

其实我测试了这个,它不工作:D,还有错字“WHERE row_number”。 –

+0

from @Alexey我意识到我错过了currentRow的init。但仍然在哪里不知何故无法正常工作。 –

+0

是的,我已经尽早尝试过了,但它不起作用,因为row_number是计数值,它不是在哪里,但不是真正的列。 –

相关问题