gpt4 book ai didi

mysql - 中间表多值查找

转载 作者:行者123 更新时间:2023-11-29 07:37:36 25 4
gpt4 key购买 nike

我有这些免费 table :

Record
+--+----------+
|id|created_at|
+--+----------+
|1 |2017-12-26|
+--+----------+
|2 |2017-12-27|
+--+----------+

Parameters
+--+----------+
|id|field_name|
+--+----------+
|1 |First name|
+--+----------+
|2 |Last name |
+--+----------+

Records_Parameters
+--+---------+------------+-----+
|id|record_id|parameter_id|value|
+--+---------+------------+-----+
|1 |1 |1 |John |
+--+---------+------------+-----+
|2 |1 |2 |Smith|
+--+---------+------------+-----+
|3 |2 |1 |Joe |
+--+---------+------------+-----+
|4 |2 |2 |Smith|
+--+---------+------------+-----+

而且我不知道如何编写查询来按参数进行搜索:

例如:

1.First name = JohnLast name = Smith 我应该得到 Record id: 1,2

2。First name = JoeLast name = Smith 我应该得到 Record id: 2

参数的数量将会改变。

提前致谢。


更新:

我试过:

选择 r.id
FROM Records_Parameters 作为 rp
JOIN 参数 p on (rp.parameter_id = p.id)
JOIN 记录 r on (r.id = rp.record_id)
哪里 1
AND (rp.parameter_id = 1 and rp.value like "%John%"
AND rp.parameter_id = 2 和 rp.value like "%Smith%");

===

[..]
哪里 1
AND rp.parameter_id = 1 and rp.value like "%John%"
AND rp.parameter_id = 2 和 rp.value like "%Smith%";

===

选择编号
FROM 记录参数
哪里 1
AND (param_id = 1 AND value LIKE "%John%"
AND param_id = 2 AND value LIKE "%Smith%");

到目前为止运气不好。


更新:

@Gordon Linoff 回答了原始问题,所以我将其标记为正确答案。

我还用一些不同的解决方案更新了这个问题,并更新了@Gordon Linoff 查询:

SELECT rp.record_id
FROM Records_Parameters rp
JOIN 参数 p on rp.parameter_id = p.id
WHERE (p.id = 1 AND (rp.value LIKE "%John%"OR rp.value LIKE "%Joe%")) OR (p.id = 2 AND rp.value LIKE "%Smith%")
按 rp.record_id 分组
计数(不同的 p.id)= 2;

使用此查询可以通过多个字段进行搜索,可以通过子字符串搜索值。

最佳答案

这回答了问题的原始版本。

一种方法使用group byhaving:

select rp.record_id
from record_parameters rp join
parameters p
on rp.parameter_id = p.id
where (p.field_name, rp.value) in ( ('First name', 'John'), ('Last name', 'Smith') )
group by rp.record_id
having count(distinct p.field_name) = 2;

关于mysql - 中间表多值查找,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47991845/

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