gpt4 book ai didi

mysql - 在 SQL 中搜索数据

转载 作者:太空宇宙 更新时间:2023-11-03 12:09:34 24 4
gpt4 key购买 nike

请看下表:

MySQL Table with results

我正在构建一个搜索引擎,它基于 category_idvalue_id 值的搜索返回 card_id 值。

为了更好地解释搜索机制,想象一下我们试图通过提供信息来查找汽车 (card_id) 这辆车应该在每个位置都有什么部分 (value_id)类别(category_id)。

例如,我们可能想要查找汽车 (card_id),其中类别“燃料类型”(category_id) 的值为“柴油”( value_id),并且类别“Gearbox”(category_id) 具有值“Manual”(value_id)。

我的问题是我的知识不足以构建查询,该查询将返回 card_id,其中包含不止一对 category_idvalue_id.

例如,如果我想搜索一辆装有柴油发动机的汽车,我可以像这样构建一个查询:

SELECT card_id FROM cars WHERE category_id=1 AND value_id=2

其中 category_id = 1 是类别“燃料类型”,value_id = 2 是“柴油”。

我的问题是,如何构建查询以查找更多类别值对?例如,我想寻找配备手动变速箱的柴油车。

任何帮助将不胜感激。提前谢谢你。

最佳答案

您可以使用聚合和 having 子句来做到这一点:

SELECT card_id
FROM cars
GROUP BY card_id
HAVING SUM(category_id = 1 AND value_id = 2) > 0 AND
SUM(category_id = 3 and value_id = 43) > 0;

having 子句中的每个条件都会计算与给定条件匹配的行数。您可以根据需要添加任意数量的条件。例如,第一个表示至少有一行类别为 1,值为 2。

SQL Fiddle

关于mysql - 在 SQL 中搜索数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24954753/

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