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.