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

Menggunakan 'LIKE' dengan hasil dari subquery SQL

Pertama, kueri ini harus tidak berfungsi dengan baik:

SELECT *
From Customers
WHERE Customers.ContactName = (SELECT FirstName
                               from Employees as E, orders as O
                               WHERE LIMIT 1);

Karena WHERE LIMIT 1 bukan SQL yang tepat. Dan, Anda harus belajar menggunakan join yang tepat sintaksis. Agaknya, Anda bermaksud:

SELECT c.*
From Customers c
WHERE c.ContactName = (SELECT FirstName
                       FROM Employees as E JOIN
                            Orders as O
                            ON . . .
                       LIMIT 1
                      );

Anda dapat menambahkan LIKE bukannya = dan '%' di subkueri:

WHERE c.ContactName LIKE (SELECT CONCAT('%', FirstName, '%') . . .

Tapi saya akan menulis ini menggunakan EXISTS :

SELECT c.*
From Customers c
WHERE EXISTS (SELECT 1
              FROM Employees as E JOIN
                   Orders as O
                   ON . . .
              WHERE c.ContactName LIKE CONCAT('%', FirstName, '%')
             );

Ini tidak melakukan hal yang persis sama dengan kueri Anda. Itu melakukan sesuatu yang lebih masuk akal. Alih-alih membandingkan satu nama acak dari subkueri, itu akan menentukan apakah ada ada cocok di subquery. Tampaknya itu niat yang lebih masuk akal untuk kueri tersebut.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Saran untuk membuat cadangan situs php dan mysql db

  2. Bagaimana cara Memperbarui tabel yang sama saat dihapus di MYSQL?

  3. Akses ditolak untuk pengguna 'root'@'localhost' (menggunakan kata sandi:YA) (Mysql::Error)

  4. Masalah kondisi WHERE dalam SQL

  5. MENGGUNAKAN klausa Kata Kunci vs ON - MYSQL