gpt4 book ai didi

mysql - 如何从表中获取组合?

转载 作者:行者123 更新时间:2023-11-29 22:15:30 26 4
gpt4 key购买 nike

我有一个包含 61 条记录的表,其中第一条记录是用其 ID 标识的“原子”记录,其他记录是前 19 条记录的组合,如下所示

id  pi1 pi2 pi3
1 1
2 2
3 3
...
19 19
20 1 13
21 1 18
...
24 2 6
25 2 7
26 2 7 16

在网页中,我有一个表单,用户可以在其中单击与原子记录相对应的按钮(例如选择 2 和 7)。当用户提交时,后端应该认为用户按下了2和7,然后结果集应该是:

id
2
7
25

第 24 行不应该出现在结果中,因为用户没有按下它

要获得基本记录,我认为这应该足够了

SELECT *
FROM table
WHERE id = 2
OR id = 7

如果按下更多选项,查询将有更多运算符。但要访问复杂的组合,我不知道如何在不获取不需要的记录的情况下实现它,只是因为其中一个选项存在于 Pi 之一(pi1、pi2 或 pi3)中

最佳答案

最好更改数据结构以拥有一个联结表——每个"new"id 一行,每个相关 id 一行。但是,您拥有三列。

我认为这就是你想要的逻辑:

select t.*
from table t
where id in (2, 7) or
(2 in (pi1, pi2, pi3) and
7 in (pi1, pi2, pi3)
);

但是,这也会为您提供 id 26。排除这一点需要做更多的工作。在 MySQL 中,这应该可以解决问题:

select t.*
from table t
where id in (2, 7) or
((2 in (pi1, pi2, pi3)) +
(7 in (pi1, pi2, pi3))
) = ((pi1 is not null) + (pi2 is not null) + (pi3 is not null))

关于mysql - 如何从表中获取组合?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31235573/

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