Първо, тази заявка трябва не работи добре:
SELECT *
From Customers
WHERE Customers.ContactName = (SELECT FirstName
from Employees as E, orders as O
WHERE LIMIT 1);
Тъй като WHERE LIMIT 1
не е правилен SQL. И трябва да се научите да използвате правилното join
синтаксис. Предполага се, че възнамерявате:
SELECT c.*
From Customers c
WHERE c.ContactName = (SELECT FirstName
FROM Employees as E JOIN
Orders as O
ON . . .
LIMIT 1
);
Възможно е да добавите LIKE
вместо =
и '%' в подзаявката:
WHERE c.ContactName LIKE (SELECT CONCAT('%', FirstName, '%') . . .
Но бих написал това с помощта на 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, '%')
);
Това не прави точно същото като вашата заявка. Прави нещо по-разумно. Вместо да сравнява едно произволно име от подзаявката, то ще определи дали има някакво съвпадения в подзаявката. Това изглежда по-разумно намерение за заявката.