Saya sedang mengusahakan skrip PHP yang mengandungi enam UNION SELECT dan dalam skrip arahan ini berfungsi dengan baik. Perintah ini juga berfungsi dengan baik apabila dilaksanakan daripada klien SQL. Walau bagaimanapun, apabila saya cuba meletakkan pernyataan SELECT di dalam CREATE TABLE mytable SELECT, saya mendapat mesej ralat berikut:
Nama lajur tidak betul ''
Dalam lima daripada enam serpihan UNION SELECT, terdapat nama lajur bernama '', yang digunakan sebagai ruang letak semasa mengisi data dalam bahagian skrip yang berikutnya. Tetapi dalam salah satu KESATUAN, kedudukan yang sama ialah lajur varchar(32).
Nampaknya kewujudan lajur "tanpa nama" tidak penting dalam pelaksanaan biasa arahan itu. Tetapi dalam versi CREATE TABLE, ia tidak menyukai ini.
Mengapakah SELECT dan CREATE TABLE SELECT mempunyai peraturan yang berbeza untuk nama lajur kesatuan?
Jadual tidak boleh mengandungi nama lajur kosong atau tiada, manakala set hasil boleh. Pernyataan CREATE TABLE SELECT memperoleh nama lajur jadual daripada set hasil pernyataan SELECT. Oleh itu, anda perlu memastikan bahawa setiap lajur set hasil mempunyai nama, sama ada diperoleh daripada lajur dalam beberapa jadual atau ditentukan melalui alias AS. Contohnya,
terpakai pada kenyataan CREATE TABLE, manakala
Tidak berkenaan kerana ia tidak memberikan nama lajur alias pada lajur pertama.