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

Kolom Alias ​​​​dalam Klausa WHERE

Belum diuji, tetapi peretasan ini akan berhasil...

SELECT * FROM (  
    SELECT profile.id AS id, given.name AS 'given_name', family.name AS 'family_name'
    FROM green_profile profile 
    LEFT JOIN green_name given ON given.profileid = profile.id AND given.name_typeid = 0 
    LEFT JOIN green_name family ON family.profileid = profile.id AND family.name_typeid = 1   
) as temptable
WHERE given_name LIKE 'levi%' 
ORDER BY given_name DESC LIMIT 0 , 25

Ini bekerja hanya dengan membuat tabel sementara dari pernyataan pilih asli Anda (tanpa klausa where dan pemesanan), yang memiliki nama kolom yang Anda tentukan. Anda kemudian memilih dari ini dengan nama kolom yang Anda inginkan.

Pendekatan yang lebih baik mungkin dengan membuat tampilan, dengan nama kolom yang Anda inginkan, dan memilih dari tampilan...

CREATE VIEW newtable AS
SELECT profile.id AS id, given.name AS 'given_name', family.name AS 'family_name'
FROM green_profile profile 
LEFT JOIN green_name given ON given.profileid = profile.id AND given.name_typeid = 0 
LEFT JOIN green_name family ON family.profileid = profile.id AND family.name_typeid = 1;

Dan kemudian...

SELECT * FROM newtable
WHERE given_name LIKE 'levi%' 
ORDER BY given_name DESC LIMIT 0 , 25


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Nilai benih MySQL RAND() hampir berulang

  2. Apakah pernyataan yang disiapkan di-cache di sisi server di beberapa halaman dimuat dengan PHP?

  3. Simpan nilai php ke java

  4. Format datetime tidak valid:1292 Nilai datetime salah

  5. Impor Kolom dari CSV ke Tabel MySQL yang ada