Учитывая следующую таблицу, в которой нет первичного ключа, могу ли я выбрать любую другую строку?
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
для четных данных