2015-07-22 6 views

risposta

7

Se non si desidera utilizzare un altro tavolo è possibile utilizzare:

INSERT INTO some_table (some_column) 
    SELECT 'Sunday' 
    FROM (
     SELECT 1 
     FROM (SELECT 1 UNION SELECT 2) as d1 
     JOIN (SELECT 1 UNION SELECT 2) as d2 
     JOIN (SELECT 1 UNION SELECT 2) as d3 
     JOIN (SELECT 1 UNION SELECT 2) as d4 
     JOIN (SELECT 1 UNION SELECT 2) as d5 
     JOIN (SELECT 1 UNION SELECT 2) as d6 
     JOIN (SELECT 1 UNION SELECT 2) as d7 
     JOIN (SELECT 1 UNION SELECT 2) as d8 
     JOIN (SELECT 1 UNION SELECT 2) as d9 
     JOIN (SELECT 1 UNION SELECT 2) as d10 
    ) AS t 
    LIMIT 1000 

È possibile regolare la quantità di JOIN in base al limite desiderato.

+0

wow .. Grande fratello .. Funziona .. Grazie mille ... –

+0

questo funziona ... ma perché, perché è più desiderabile di usare un loop? – Kritner

+0

Probabilmente è più veloce dell'utilizzo di un inserto a riga singola in un ciclo. Diverso da quello è perché è quello che è stato chiesto (solo SQL, no loop). – Vatev

0

creare una tabella con alcune righe N quindi incrociare il valore sunday con le 1000 righe.

select A.day_name from number_table 
cross join (select 'sunday' as day_name) A 
where num <= 1000 
+0

amico, "creare un tavolo con alcune righe N" è il problema che sta chiedendo di risolvere. Beh, non esattamente, ma difficilmente un miglioramento. – AgapwIesu

+0

Voglio inserire 1000 righe con il nome domenica .. e ti stai sbagliando .. –

+0

Anon316, l'OP ha appena chiesto di evitare i loop, non le tabelle temporanee. @HmanshuUpadhyay, quale errore? –

0

Se si dispone già di una tabella che ha più di un 1000 righe, si potrebbe fare

insert into mytable (mycolumn) select "Sunday" from mytablewithmorethan1000 limit 1000 
0

Prova come questo con stored procedure,

create table thousandvalues (
id int not null auto_increment primary key, 
weeks varchar(10) 
); 

delimiter // 
create procedure showthousand (in num int) 
begin 
declare i int default 0; 
while i < num do 
insert into thousandvalues (weeks) values ('sunday'); 
set i = i + 1; 
end while; 
end // 
delimiter; 

call showthousand (1000); 

Speranza che aiuta.

+0

'while' è un ciclo: P – Kritner

1

INSERT INTO some_table (some_column) SELEZIONA 'Domenica' DA ( SELECT 1 FROM (SELECT 1 UNION SELECT 2) come D1 JOIN (SELEZIONARE 1 UNION SELECT 2) come d2 JOIN (SELEZIONARE 1 UNION SELECT 2) come d3 ENTRARE (SELECT 1 UNION SELECT 2) come d4 ENTRARE (SELECT 1 UNION SELECT 2) come d5 ENTRARE (SELEZIONARE 1 UNION SELECT 2) come d6 ENTRARE (SELEZIONARE 1 UNION SELECT 2) come d7 ENTRA (SELEZIONA 1 UNION SELECT 2) come d8 UNISCI (SELEZIONA 1 UNION SELECT 2) come d9 UNISCI (SELEZIONA 1 UNIONE SELEZIONA 2) come d10 ) AS t LIMIT 1000

1
INSERT INTO some_table (some_column) 
SELECT 'Sunday' FROM (SELECT 1 FROM (SELECT 1 UNION SELECT 2) as d1 

JOIN (SELECT 1 UNION SELECT 2) as d2 JOIN (SELECT 1 UNION SELECT 2) as d3 
JOIN (SELECT 1 UNION SELECT 2) as d4 JOIN (SELECT 1 UNION SELECT 2) as d5 

JOIN (SELECT 1 UNION SELECT 2) as d6 JOIN (SELECT 1 UNION SELECT 2) as d7 
JOIN (SELECT 1 UNION SELECT 2) as d8 JOIN (SELECT 1 UNION SELECT 2) as d9 
JOIN (SELECT 1 UNION SELECT 2) as d10) AS t LIMIT 1000 
Problemi correlati