MySQL multplie satırları ekleme satır sipariş

7 Cevap php

PHP, ben oluşturmak ve aşağıdaki gibi bir SQL sorguları yürütmek.

INSERT INTO Table (Column1, Column2, Column3) VALUES
('1', '2', '3'),
('A', 'B', 'C'),
('AA', 'BB', 'CC');

Ancak, veritabanına eklenen hangi sipariş Ben bu deneyin her zaman farklıdır. Ben onlar listelenen sırayla eklenir emin bir yolu var mı?

Addition: Thanks guys for the help. I have using PHP to create MySQL tables from CSV files for a while. In the past, I have always used created a table and inserted all the rows all at once. In these case, the SQL table always had the same order as my INSERT query. However, now I am creating a MySQL and then adding contents gradually. This is when the database order becomes random.

Ben BY sorgular ... ALTER TABLE kullanarak SİPARİŞ bu üstesinden var, ama orada düzen birinci durumda ve şimdi çok rasgele gibi görünüyor ben merak ediyorum.

7 Cevap

Varsayılan sipariş insert tabloların sırası idam budur. Satırlar arasında hiyerarşik bir ilişki olmadığı sürece, eklenen sıralama ilgisizdir. Eğer tutarlı bir şekilde çıkışını isterseniz, must sizin sorguda bir ORDER BY tümcesi tanımlar.

Eğer belirli bir sırayla satırları almak istiyorsanız, emin olmak için tek yol ORDER BY yan tümcesi kullanmaktır.

Bir ilişki sırasını tanımlar asla, böylece bu bağlı olamaz. Sen istenilen sonuçları almak için ORDER BY yan tümcesi kullanabilirsiniz.

Onlar takılı olduğunuz sırasını garanti bir yolu var:

INSERT INTO Table (Column1, Column2, Column3) VALUES ('1', '2', '3');
INSERT INTO Table (Column1, Column2, Column3) VALUES ('A', 'B', 'C');
INSERT INTO Table (Column1, Column2, Column3) VALUES ('AA', 'BB', 'CC');

:-)

Ama SQL sonuç kümeleri ile çalışan, bir ilişkisel cebir ve işler içine sokulduğu sırası önemli olmadığını anlamak gerekir. Sütunlardan biri çeşit bir zaman damgası veya size üç satır için belirli bir sırayla ayarlamak ister bir otomatik artım alanı yoksa, önemli değil (ve her ikisi de bu aslında isteyen sipariş için iyi nedenler değil ) kontrol edilir.

Eğer onlar oluşturulan konum için endişe olmamalı yani onlara ne istediğinizi sipariş belirttiğiniz sürece satırları ayıklamak zaman herhangi bir garanti değil. Bir order by deyimi olmadan, sipariş aslında bir select yapmak her zaman değiştirebilirsiniz.

Ekin sırası DBMS tarafından garanti olmasa da genellikle FIFO olduğunu. İlk giren ilk çıkar.

Belirli bir düzen içinde meydana INSERT deyimi zorlama yolu (ben farkında olduğumu) vardır. : Sadece bir çıplak seçme gibi yapıyor

SELECT * FROM Table

Her zaman ya da aynı sırayla verileri geri dönmeyecek. MySQL (ve tüm diğer veritabanı sistemleri), veri depolamak için geliyordu ve uygun bir şekilde sorgulamak için geliştirici kadar olduğu olmasıdır. Neyse ki, sınırı sipariş ve gibi verileri seçmek için birçok farklı yolu vardır:

ORDER BY column_name ASC
LIMIT 10
WHERE column_name = "test"
WHERE column_name IN (1, 2, 3)
--etc