まず、このクエリはすべき 正常に機能していない:
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, '%')
);
これは、クエリとまったく同じことを行うわけではありません。それはもっと合理的なことをします。サブクエリからの1つのランダムな名前を比較する代わりに、何かがあるかどうかを判断します。 サブクエリで一致します。これは、クエリのより合理的な意図のようです。