Po pierwsze, to zapytanie powinno nie działa dobrze:
SELECT *
From Customers
WHERE Customers.ContactName = (SELECT FirstName
from Employees as E, orders as O
WHERE LIMIT 1);
Ponieważ WHERE LIMIT 1
nie jest poprawnym SQL. I powinieneś nauczyć się używać prawidłowego join
składnia. Przypuszczalnie zamierzasz:
SELECT c.*
From Customers c
WHERE c.ContactName = (SELECT FirstName
FROM Employees as E JOIN
Orders as O
ON . . .
LIMIT 1
);
Ewentualnie możesz dodać LIKE
zamiast =
i '%' w podzapytaniu:
WHERE c.ContactName LIKE (SELECT CONCAT('%', FirstName, '%') . . .
Ale napisałbym to za pomocą 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, '%')
);
To nie jest dokładnie to samo, co zapytanie. Robi coś bardziej rozsądnego. Zamiast porównywać jedną losową nazwę z podzapytania, określi, czy istnieją jakiekolwiek dopasowania w podzapytaniu. Wydaje się to bardziej rozsądną intencją dla zapytania.