gpt4 book ai didi

Mysql 对多个表进行连接和搜索

转载 作者:行者123 更新时间:2023-11-30 01:38:11 24 4
gpt4 key购买 nike

我有 2 个表、产品和类别定义如下:

表:类别 -category_id、类别

表:产品 - 产品 ID、类别 ID、商品编号、描述

我正在尝试将描述和类别连接到单个可搜索字段中。当我执行以下操作时,它可以工作,但代码很笨拙:

SELECT *, concat(description, ' ',category) as searchable 
FROM products, categories
where concat(description, ' ',category) like '%flowers%'
and concat(description, ' ',category) like '%rainbow%'
and products.category_id=categories.category_id order by products.category_id

所以我尝试编写这样的子查询:

SELECT *
FROM products, categories,
(SELECT concat(description, ' ',category) as searchable
FROM products, categories
where products.category_id=categories.category_id
group by product_id) as sub
where searchable like '%flowers%' and searchable like '%rainbow%'
and products.category_id=categories.category_id order by products.category_id;

此查询为每个product_id返回多个不正确的结果,当我尝试按product_id分组时,每个结果都显示不正确的可搜索字段。

如有任何帮助,我们将不胜感激。

最佳答案

有时关键是简化。以下将查找描述或类别与“%rainbow%”匹配的产品。

通过将查询分解为两个 LIKE 子句,我们还通过消除繁重的 CONCAT 操作来提高性能。

SELECT p.*
FROM products AS p
LEFT JOIN categories AS c ON p.category_id = c.category_id
WHERE p.description LIKE '%rainbow%'
OR c.category LIKE '%rainbow%'
GROUP BY p.product_id

关于Mysql 对多个表进行连接和搜索,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16555066/

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