gpt4 book ai didi

mysql - 使用 MySQL 查询查找具有匹配行的 ID

转载 作者:行者123 更新时间:2023-11-29 03:21:42 25 4
gpt4 key购买 nike

+----------+---------+---------+-----------+-----------+--------------+
| entry_id | item_id | stat_id | stat_type | int_value | string_value |
+----------+---------+---------+-----------+-----------+--------------+
| 1 | 4255 | 10 | int | 54 | NULL |
| 2 | 4255 | 16 | int | 443 | NULL |
| 3 | 4255 | 56 | int | 13 | NULL |
| 4 | 6544 | 10 | int | 54 | NULL |
| 5 | 6544 | 56 | int | 13 | NULL |
| 6 | 6544 | 16 | int | 443 | NULL |
| 7 | 8570 | 56 | int | 13 | NULL |
| 8 | 8570 | 10 | int | 76 | NULL |
| 9 | 8570 | 72 | int | 1 | NULL |
+----------+---------+---------+-----------+-----------+--------------+

以上是我的表格示例。任务是为表提供目标“item_id”值,取回与目标具有相同行的“item_id”。

在上面的示例中,提供 4255 的“item_id”将返回 6544,因为这两个“item_id”值都在三行中找到,每一行在其他方面彼此匹配(“entry_id”除外)。

本质上,我需要找出数据库中是否有另一个“item_id”,它在所有方面都与目标相同。如果它具有相同的行但也在其他行中找到,则不会将其归类为匹配项。

是否可以将此类操作作为 SQL 查询的一部分?我目前正在用 C# 代码执行此操作,我在其中逐行检查包含目标“item_id”的每一行,以寻找匹配项。这看起来效率很低。

最佳答案

假设你没有重复项(组合 (item_id, stat_id, stat_type, int_value, string_value) 是唯一的)并且只有 string_value 可以为 NULL,那么你可以加入完全匹配并比较行数(数学的数量必须等于两个项目的行数)。

select t2.item_id
from t t1
join t t2 using(stat_id, stat_type, int_value)
where t1.item_id = 4255
and t2.item_id <> t1.item_id
and t2.string_value <=> t1.string_value
group by t1.item_id, t2.item_id
having count(*) = (select count(*) from t where t.item_id = 4255)
and count(*) = (select count(*) from t where t.item_id = t2.item_id)

演示:http://rextester.com/RIU87596

关于mysql - 使用 MySQL 查询查找具有匹配行的 ID,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43416791/

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