gpt4 book ai didi

php - 同一张表的多个查询

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

这是根据发布参数动态生成的大查询的一部分......

有一个表user_params

id |  user_id | param_id | param_value 
--------------------------------------
1 | 5 | 2 | audi
--------------------------------------
2 | 5 | 3 | a4
--------------------------------------
3 | 5 | 4 | silver
--------------------------------------
4 | 7 | 2 | audi
--------------------------------------
5 | 7 | 3 | q3
--------------------------------------
6 | 8 | 2 | ford
--------------------------------------
7 | 8 | 3 | fiesta
--------------------------------------

我想提取所有 'user_id' where 'param_id' = 1 , 'param_value' = 'audi' , 'param_id' = 3 , 'param_value' = 'a4'

所以在这种情况下,我的结果应该包含 id 行 1、2、4、5、7。

考虑到这个表有超过 50K 个条目,最好的方法是什么?

这是一个 InnoDB 表。

+++ 现在我看到有一个 html 表单,其中包含这些表的多选字段。“给我所有驾驶奥迪(a4 或 q3)或大众(帕萨特)的用户(user_id),它们是银色的”。

我正在测试您编写的解决方案。

最佳答案

您必须在同一个表上执行多个连接。

一种方法是这样的

SELECT
t1.user_id
FROM
thetable AS t1,
thetable AS t2,
thetable AS t3
WHERE
t1.user_id = t2.user_id AND t2.user_id=t3.user_id AND
t1.param_id = 1 AND t1.param_value = 'audi' AND
t2.param_id = 3 AND t2.param_value = 'a4' AND
t3.param_id = 4 AND t3.param_value = 'silver'

这等同于使用 JOIN 语句,但它只是给出了思路。

当然,查询必须扩展或减少,具体取决于您要检查的参数数量(示例中为 3 个)。

如果所有字段都已编制索引,则查询在 50K 条记录上运行得相当快。

关于php - 同一张表的多个查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29255091/

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