Mysql
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Mysql

Sử dụng 'LIKE' với kết quả của một truy vấn con SQL

Trước tiên, truy vấn này nên không hoạt động tốt:

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

Bởi vì WHERE LIMIT 1 không phải là SQL thích hợp. Và, bạn nên học cách sử dụng join thích hợp cú pháp. Có lẽ, bạn dự định:

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

Bạn có thể thêm LIKE một cách hình dung thay vì = và '%' trong truy vấn con:

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

Nhưng tôi sẽ viết điều này bằng cách sử dụng 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, '%')
             );

Điều này không làm chính xác những điều tương tự như truy vấn của bạn. Nó làm điều gì đó hợp lý hơn. Thay vì so sánh một tên ngẫu nhiên từ truy vấn con, nó sẽ xác định xem có bất kỳ phù hợp trong truy vấn con. Đó có vẻ là một ý định hợp lý hơn cho truy vấn.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. lỗi ghi log4net trong ghi nhật ký cơ sở dữ liệu mysql

  2. Máy ảnh Android để chụp nhiều ảnh

  3. Ý nghĩa của các thủ tục được lưu trữ được biên dịch trước là gì?

  4. MYSQLI ::chuẩn bị (), lỗi khi sử dụng trình giữ chỗ:cái gì đó

  5. cách chèn mã HTML vào DB bằng php