gpt4 book ai didi

MySQL简单搜索查询

转载 作者:行者123 更新时间:2023-11-29 04:53:43 25 4
gpt4 key购买 nike

我有这个查询,我按照我认为正确的方式编写了它,但它返回了数千个结果,但似乎没有一个匹配(除非巧合)。

SELECT DISTINCT a.id,a.name 
FROM auctioneers a,auctioneersloc al, auctioneerscont ac
WHERE a.email LIKE "%mike.barker@example.co.uk%"
OR ac.email LIKE "%mike.barker@example.co.uk%"
ORDER BY name

我希望你能看到我在这里想做什么,但我看不到我做错了什么!
感谢您提供的任何帮助。 :)

最佳答案

您遇到的情况称为“笛卡尔积”(一个表中的每条记录都连接到另一个表中的每条记录)。当您在没有指定任何“ON”或(足够的)“WHERE”条件的情况下连接表时会发生这种情况。

在不知道将三个表链接在一起的公共(public)字段的情况下,我将使用 a.id 并假设在 auctioneersloc 和 auctioneerscont 表上存在一个名为“auctioneers_id”的外键字段。但是你会想要这样的东西:

SELECT DISTINCT a.id,a.name 
FROM auctioneers a
INNER JOIN auctioneersloc al ON al.auctioneers_id = a.id
INNER JOIN auctioneerscont ac ON ac.auctioneers_id = a.id
WHERE a.email LIKE "%mike.barker@example.co.uk%"
OR ac.email LIKE "%mike.barker@example.co.uk%"
ORDER BY name

当然,如果“auctioneers”表中的行不需要匹配“auctioneersloc”或“auctioneerscont”表中的行,那么您应该使用 LEFT JOIN(而不是 INNER JOIN ).

就个人风格而言,我尝试始终明确指定我的 JOIN。只需在 FROM 子句中列出所有表即可,但它依赖于 WHERE 子句来指定 JOIN 条件。从应用程序开发的角度来看,这可能很糟糕,如果在构建查询字符串时 WHERE 子句出现问题,您将获得笛卡尔积。始终记住指定 JOIN 关键字应该可以避免像这样的意外 CP。

关于MySQL简单搜索查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8782127/

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