gpt4 book ai didi

mysql - 将 'LIKE' 与 SQL 子查询的结果一起使用

转载 作者:可可西里 更新时间:2023-11-01 07:20:07 25 4
gpt4 key购买 nike

以下查询对我来说绝对没问题:

SELECT * From Customers
WHERE Customers.ContactName = (SELECT FirstName
FROM Employees as E, orders as O
WHERE <condition>
LIMIT 1);

但是,如果我使用 LIKE 而不是 = 来与子查询的结果进行比较,我不会得到任何结果。如何在上述查询中使用 LIKE '%%'

最佳答案

首先,这个查询应该不能正常工作:

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, '%')
);

这与您的查询不完全相同。它做了一些更合理的事情。它不是比较子查询中的一个随机名称,而是确定子查询中是否有 any 匹配项。这似乎是一个更合理的查询意图。

关于mysql - 将 'LIKE' 与 SQL 子查询的结果一起使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30889745/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com