Как я делаю генератор строки в MySQL?

Этот код поможет вам разделить четные и нечетные числа.

// java code to segregate even odd 
// numbers in an array 
public class GFG { 

// Function to segregate even 
// odd numbers 
static void arrayEvenAndOdd( 
            int arr[], int n) 
{ 

    int i = -1, j = 0; 
    while (j != n) { 
        if (arr[j] % 2 == 0) 
        { 
            i++; 

            // Swapping even and 
            // odd numbers 
            int temp = arr[i]; 
            arr[i] = arr[j]; 
            arr[j] = temp; 
        } 
        j++; 
    } 

    // Printing segregated array 
    for (int k = 0; k < n; k++) 
        System.out.print(arr[k] + " "); 
} 

// Driver code 
public static void main(String args[]) 
{ 
    int arr[] = { 1, 3, 2, 4, 7, 
                        6, 9, 10 }; 
    int n = arr.length; 
    arrayEvenAndOdd(arr, n); 
 } 
} 
21
задан spenibus 21 October 2015 в 20:30
поделиться

3 ответа

Ненависть для высказывания этого, но MySQL единственное RDBMS из Большой четверки, которая не имеет этой функции.

В Oracle:

SELECT  *
FROM    dual
CONNECT BY
        level < n

В MS SQL (до 100 строки):

WITH hier(row) AS
        (
        SELECT  1
        UNION ALL
        SELECT  row + 1
        FROM    hier
        WHERE   row < n
        )
SELECT  *
FROM    hier

или использование подсказки до 32768

WITH hier(row) AS
        (
        SELECT  1
        UNION ALL
        SELECT  row + 1
        FROM    hier
        WHERE   row < 32768
        )
SELECT  *
FROM    hier
OPTION (MAXRECURSION 32767) -- 32767 is the maximum value of the hint

В PostgreSQL:

SELECT  *
FROM    generate_series (1, n)

В MySQL, ничто.

25
ответ дан 29 November 2019 в 20:17
поделиться

Если я понимаю Вас, Вы хотите список consequtive чисел?

Просто составьте список:

create table artificial_range (id int not null primary key auto_increment, idn int);
insert into artificial_range (idn) values (0); --first row
insert into artificial_range(idn) select idn from artificial_range; --2nd
insert into artificial_range(idn) select idn from artificial_range; -- now 4 rows
insert into artificial_range(idn) select idn from artificial_range; --8
insert into artificial_range(idn) select idn from artificial_range; --16
insert into artificial_range(idn) select idn from artificial_range; --32
insert into artificial_range(idn) select idn from artificial_range; --64
insert into artificial_range(idn) select idn from artificial_range; --128

... и т.д., пока Вы не имеете, скажем, 1024.

update artificial_range set idn = id - 1 ; 

- теперь у Вас есть ряд, уставившись 1 (идентификатор) и ряд, запускающийся в 0

Теперь соедините с ним или соедините с преобразованиями его:

    create view days_this_century as 
select date_add('2000-01-01', interval a.idn day) as cdate 
from artificial_range;
1
ответ дан 29 November 2019 в 20:17
поделиться

Я не знаю, помогает ли это, но можно пронумеровать строки от каждого избранного оператора с sth. как:

НАБОР @NUM = 0;

ВЫБЕРИТЕ @NUM: = NUM+1 rowNumber, * ОТ...

И позже присоединитесь к ним на этом. В больших базах данных это может быть очень медленно.

0
ответ дан 29 November 2019 в 20:17
поделиться
Другие вопросы по тегам:

Похожие вопросы: