Innanzitutto, questa query dovrebbe non funziona bene:
SELECT *
From Customers
WHERE Customers.ContactName = (SELECT FirstName
from Employees as E, orders as O
WHERE LIMIT 1);
Perché WHERE LIMIT 1
non è corretto SQL. E dovresti imparare a usare correttamente join
sintassi. Presumibilmente, intendi:
SELECT c.*
From Customers c
WHERE c.ContactName = (SELECT FirstName
FROM Employees as E JOIN
Orders as O
ON . . .
LIMIT 1
);
Si potrebbe plausibilmente aggiungere LIKE
invece di =
e '%' nella sottoquery:
WHERE c.ContactName LIKE (SELECT CONCAT('%', FirstName, '%') . . .
Ma lo scriverei usando 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, '%')
);
Questo non fa esattamente la stessa cosa della tua query. Fa qualcosa di più ragionevole. Invece di confrontare un nome casuale dalla sottoquery, determinerà se ce ne sono qualsiasi corrisponde nella sottoquery. Sembra un'intenzione più ragionevole per la query.