Först, den här frågan bör fungerar inte bra:
SELECT *
From Customers
WHERE Customers.ContactName = (SELECT FirstName
from Employees as E, orders as O
WHERE LIMIT 1);
Eftersom WHERE LIMIT 1
är inte korrekt SQL. Och du bör lära dig att använda korrekt join
syntax. Förmodligen tänker du:
SELECT c.*
From Customers c
WHERE c.ContactName = (SELECT FirstName
FROM Employees as E JOIN
Orders as O
ON . . .
LIMIT 1
);
Du kan tänkas lägga till LIKE
istället för =
och '%' i underfrågan:
WHERE c.ContactName LIKE (SELECT CONCAT('%', FirstName, '%') . . .
Men jag skulle skriva detta med 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, '%')
);
Detta gör inte exakt samma sak som din fråga. Det gör något mer rimligt. Istället för att jämföra ett slumpmässigt namn från underfrågan kommer det att avgöra om det finns några matchar i underfrågan. Det verkar vara en mer rimlig avsikt med frågan.