gpt4 book ai didi

sql - MySQL 匹配...反对与空值?

转载 作者:行者123 更新时间:2023-11-29 00:59:56 26 4
gpt4 key购买 nike

我有一个像这样使用左连接的查询:

SELECT a.id, a.username, a.date_created, a.contact_id, a.role_id,
c.first_name, c.middle_initial, c.last_name, c.email, r.role
FROM accounts AS a
LEFT JOIN contacts AS c ON a.contact_id = c.id
LEFT JOIN roles AS r ON a.role_id = r.id
WHERE ( MATCH (a.username, c.first_name, c.middle_initial, c.last_name, c.email)
AGAINST ('searchTerm*' IN BOOLEAN MODE) )

问题是,有些帐户 (a.id) 没有相应的联系人 (c.id) 或角色 (r.id),因此加入后该信息为空(我猜)。

当发生这种情况时,无论如何我都会得到与搜索词不匹配的结果(在正常结果之上),并且它们都是由连接填充的空值。

我已经尝试过不同类型的连接,并且已经在 Internet 上查看过,但我还没有找到专门解决这个问题的东西。我认为它会对其他人有用,因为我可以看到它会出现在其他领域。

因此,我们将不胜感激,谢谢!

最佳答案

您需要将 NULLS 替换为空字符串,这样您就不会得到任何虚假匹配。仅匹配 COALESCE(c.email, '')(等),而不仅仅是字段。

COALESCE 会返回它的第一个参数,除非它是 NULL,然后它会返回第二个参数。

关于sql - MySQL 匹配...反对与空值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4027995/

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