Mysql
 sql >> Teknologi Basis Data >  >> RDS >> Mysql

Kesalahan kolom Duplikat MySQL hanya ketika kueri dibungkus sebagai subkueri

Alasan Anda mendapatkan kesalahan adalah karena aliasing AS X . Tetapi masalahnya adalah Anda menggunakan * , alih-alih mencantumkan bidang yang Anda inginkan.

Dalam kueri pertama, SELECT * sebenarnya menghasilkan bidang seperti:

A.id, A.name, A.description, B.id, B.name, B.date_started, C.id, C.name, C.isDeleted

Ini berfungsi dengan baik, kecuali jika Anda mencoba mereferensikan bidang dengan namanya secara langsung dan tidak menggunakan aliasnya. Bagaimanapun juga, mesin SQL Anda tidak akan bermasalah dengan ini, apa pun yang Anda lakukan dengan kumpulan hasil mungkin masih bermasalah.

Namun ketika Anda memindahkan kueri Anda ke dalam subkueri dan alias hasil AS X , maka Anda akan mendapatkan:

X.id, X.name, X.description, X.id, X.name, X.date_started, X.id, X.name, X.isDeleted

Sekarang Anda dapat melihat mengapa itu mengeluh. Anda dapat melihat mengapa menggunakan* . juga buruk , karena kombinasi ini dapat bekerja untuk beberapa waktu, dan kemudian Anda menambahkan bidang baru ke tabel yang ada, yang sama dengan tabel lain, dan bang, setiap kueri yang telah Anda tulis dengan kedua tabel ini, sekarang harus ditulis ulang.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. MySQL Query ORDER BY nilai-nilai tertentu sebelum yang lain

  2. Pilih SEMUA bidang yang hanya berisi huruf UPPERCASE

  3. MY SQL - Kode Kesalahan:1010. Kesalahan menjatuhkan basis data (tidak dapat rmdir; errno:13)

  4. Bagaimana cara menyimpan data di MySql menggunakan cygnus?

  5. symfony2 dengan doktrin tidak dapat terhubung ke database mysql jarak jauh