Nejprve tento dotaz měl by nefunguje dobře:
SELECT *
From Customers
WHERE Customers.ContactName = (SELECT FirstName
from Employees as E, orders as O
WHERE LIMIT 1);
Protože WHERE LIMIT 1
není správné SQL. A měli byste se naučit používat správné join
syntax. Pravděpodobně máte v úmyslu:
SELECT c.*
From Customers c
WHERE c.ContactName = (SELECT FirstName
FROM Employees as E JOIN
Orders as O
ON . . .
LIMIT 1
);
Mohli byste přidat LIKE
místo =
a '%' v dílčím dotazu:
WHERE c.ContactName LIKE (SELECT CONCAT('%', FirstName, '%') . . .
Ale napsal bych to 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, '%')
);
Nedělá to přesně to samé jako váš dotaz. Dělá to něco rozumnějšího. Namísto porovnávání jednoho náhodného jména z dílčího dotazu určí, zda existují nějaké shoduje se v poddotazu. To se zdá být pro dotaz rozumnější.