For det første bør denne forespørgsel fungerer ikke fint:
SELECT *
From Customers
WHERE Customers.ContactName = (SELECT FirstName
from Employees as E, orders as O
WHERE LIMIT 1);
Fordi WHERE LIMIT 1
er ikke korrekt SQL. Og du bør lære at bruge korrekt join
syntaks. Formentlig har du til hensigt:
SELECT c.*
From Customers c
WHERE c.ContactName = (SELECT FirstName
FROM Employees as E JOIN
Orders as O
ON . . .
LIMIT 1
);
Du kunne tænkes at tilføje LIKE
i stedet for =
og '%' i underforespørgslen:
WHERE c.ContactName LIKE (SELECT CONCAT('%', FirstName, '%') . . .
Men jeg ville skrive dette ved at bruge 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, '%')
);
Dette gør ikke præcis det samme som din forespørgsel. Det gør noget mere fornuftigt. I stedet for at sammenligne et tilfældigt navn fra underforespørgslen, vil det afgøre, om der er nogle matcher i underforespørgslen. Det virker som en mere rimelig hensigt med forespørgslen.