Erstens, diese Abfrage sollte nicht gut funktionieren:
SELECT *
From Customers
WHERE Customers.ContactName = (SELECT FirstName
from Employees as E, orders as O
WHERE LIMIT 1);
Denn WHERE LIMIT 1
ist kein richtiges SQL. Und Sie sollten lernen, den richtigen join
zu verwenden Syntax. Vermutlich beabsichtigen Sie:
SELECT c.*
From Customers c
WHERE c.ContactName = (SELECT FirstName
FROM Employees as E JOIN
Orders as O
ON . . .
LIMIT 1
);
Sie könnten möglicherweise LIKE
hinzufügen statt =
und '%' in der Unterabfrage:
WHERE c.ContactName LIKE (SELECT CONCAT('%', FirstName, '%') . . .
Aber ich würde dies mit EXISTS
schreiben :
SELECT c.*
From Customers c
WHERE EXISTS (SELECT 1
FROM Employees as E JOIN
Orders as O
ON . . .
WHERE c.ContactName LIKE CONCAT('%', FirstName, '%')
);
Dies macht nicht genau dasselbe wie Ihre Abfrage. Es macht etwas Vernünftigeres. Anstatt einen zufälligen Namen aus der Unterabfrage zu vergleichen, wird bestimmt, ob es irgendwelche gibt Übereinstimmungen in der Unterabfrage. Das scheint eine vernünftigere Absicht für die Abfrage zu sein.