выбирать каждую другую строку в MySQL без какого-либо идентификатора?

Учитывая следующую таблицу, в которой нет первичного ключа, могу ли я выбрать любую другую строку?

col1 col2 2 a 1 b 3 c 12 g 

сначала выберите: 2, 3

второй выбор должен найти: 1, 12

это возможно?

В уникальной версии MySQL:

 select * from ( select * , @rn := @rn + 1 as rn from Table1 join (select @rn := 0) i ) s where rn mod 2 = 0 -- Use = 1 for the other set 

Пример в SQL Fiddle.

Это должно работать для MySQL:

 SELECT col1, col2 FROM ( SELECT col1, col2, @rowNumber:=@rowNumber+ 1 rn FROM YourTable JOIN (SELECT @rowNumber:= 0) r ) t WHERE rn % 2 = 1 

Это использует%, который является оператором MOD.

И вот пример скрипки: http://sqlfiddle.com/#!2/cd31b/2

Попробуй это. Я адаптировал его из ответа, приведенного ниже. Я тестировал его на SQLFiddle и, похоже, работает.

http://sqlfiddle.com/#!2/0bccf/28
http://sqlfiddle.com/#!2/0bccf/29

Нечетные строки:

 SELECT x.* FROM ( SELECT @rownum:=@rownum+1 rownum, t.* FROM (SELECT @rownum:=0) r, table t ) x WHERE MOD(x.rownum, 2) = 1 

Даже строки:

 SELECT x.* FROM ( SELECT @rownum:=@rownum+1 rownum, t.* FROM (SELECT @rownum:=0) r, table t ) x WHERE MOD(x.rownum, 2) = 0 

Адаптировано из: номера строки MySQL

Рассмотрим этот ответ: как показывать только четные или нечетные строки в SQL Server 2008?

Кажется, вы делаете именно то, что хотите. Я думаю, что эта работа в MySql, но я не уверен.

не работает, но все равно уходит.

SELECT @row: = @row + 1 строка AS, … FROM yourtable, (SELECT @row: = -1) как foo … HAVING row% 2 = 0

да возможно использовать временную переменную

Пример :

 set @a := 0; select * from car_m_city WHERE mod((@a:=@a+1), 2) = 1 

Объяснение:

здесь в sql мы объявляем переменную @a ( set @a := 0; ) temp. (@a:=@a+1) теперь @a приращение на 1.js как простой способ проверить нечетные или четные

mod((@a:=@a+1), 2) = 1 для нечетных данных

mod((@a:=@a+1), 2) = 0 для четных данных