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

SQL menggunakan kolom dari subselect di mana klausa

Anda tidak dapat menggunakan alias kolom di WHERE klausa.

Jadi, Anda dapat membungkus kueri Anda dengan pilihan luar dan menerapkan kondisi Anda di sana

SELECT * 
  FROM
(
  SELECT a, b, c,
    (SELECT d FROM B LIMIT 0,1) d
  FROM A
) q
 WHERE d >= 10

atau Anda dapat memperkenalkan kondisi itu di HAVING klausa sebagai gantinya

SELECT a, b, c,
    (SELECT d FROM B LIMIT 0,1) d
  FROM A
HAVING d >= 10

Namun pendekatan lain adalah dengan menggunakan CROSS JOIN dan terapkan kondisi Anda di WHERE klausa

SELECT a, b, c, d
  FROM A CROSS JOIN 
(
  SELECT d FROM B LIMIT 0,1
) q
 WHERE d >= 10

Ini SQLFiddle demo untuk semua pertanyaan yang disebutkan di atas.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. SQLSTATE[HY093]:Nomor parameter tidak valid:parameter tidak ditentukan

  2. Bagaimana cara kerja parameter 'LIMIT' di sql?

  3. Bagaimana saya bisa mensimulasikan variabel array di MySQL?

  4. MySQL:Akses ditolak untuk pengguna 'pengguna'@'IP_ADDRESS' - Akses jarak jauh diizinkan untuk beberapa host gagal untuk host lain

  5. SQL:Temukan rekor maksimum per grup