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

Wildcard MySQL di pilih

Tidak juga. Anda dapat menggunakan * karakter pengganti kolom untuk memilih semua kolom. Jika Anda menggabungkan beberapa tabel, Anda dapat memilih semua kolom dari tabel tertentu dengan mengawali * dengan nama tabel atau alias:

SELECT a.id, a.title, b.*
  FROM articles AS a
    JOIN blurbs AS b ON a.id = b.article

Namun, Anda tidak boleh menggunakan * kecuali Anda sedang menulis program administrasi DB.

Atau, Anda dapat membuat pernyataan dalam SQL atau bahasa lain dengan mengambil metadata tabel untuk mendapatkan nama kolom. Dengan hanya menggunakan MySQL, Anda dapat menanyakan COLUMNS tabel di INFORMATION_SCHEMA database untuk mendapatkan nama kolom dan menggunakan GROUP_CONCAT untuk membangun daftar kolom untuk pernyataan tersebut.

SELECT CONCAT(
      'SELECT ',
      GROUP_CONCAT(COLUMN_NAME SEPARATOR ', '),
      ' FROM ', :db, '.', :table,
      ' WHERE ...'
      )
  FROM INFORMATION_SCHEMA.COLUMNS
  WHERE TABLE_SCHEMA=:db AND TABLE_NAME=:table

Ganti ":db", ":tabel" dan "..." dengan nilai yang sesuai. Anda bahkan dapat mengubahnya menjadi pernyataan siap pakai sehingga Anda dapat menggunakannya untuk tabel apa pun. Dari sana, PREPARE dan EXECUTE pernyataan yang dibuat.

Jika Anda tidak terbatas pada SQL untuk pemrograman, itu seharusnya tidak terlalu berantakan. Driver DB untuk bahasa pilihan Anda kemungkinan menawarkan metode untuk mendapatkan metadata. Implementasi sebenarnya akan mirip dengan pendekatan SQL murni (dapatkan nama kolom, pernyataan assemble, persiapkan, jalankan), tetapi tidak boleh terlalu jelek, karena Anda akan menggunakan bahasa algoritmik, bukan deklaratif.

Saya akan sangat tertarik melihat situasi bahwa ini benar-benar diperlukan..



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Kesalahan Kueri SQL MySQL WordPress di Kelas WPDB

  2. Cara mengimpor dan mengekspor database MySQL

  3. Dapatkan id catatan yang terakhir dimasukkan di mybatis

  4. Cara mengaktifkan ENUM di Symfony 2 / Doctrine

  5. Bagaimana cara mengimpor file .sql di database mysql menggunakan PHP?