gpt4 book ai didi

mysql - 根据多列查找匹配行(列的顺序无关紧要)

转载 作者:行者123 更新时间:2023-11-29 01:41:45 25 4
gpt4 key购买 nike

我有这样的表结构

PersonID   |  Name   |  ItemID1  |  ItemID2  |ItemID3  | ItemID4
1 | kk | 1 | 2 |NULL | NULL
2 | KK | 1 | NULL | 2 | NULL

在上面的数据集中,如果两个人有相同的名字和相同的项目集(项目序列在这里不匹配),则他们是相同的。基本上,在第 1 行中,人名是 KK,项目列表是 1 和 2,第 2 行也是如此。因此这 2 个是匹配行。

我需要编写一个 sql 查询来查找这些匹配的行吗?

最佳答案

此查询将使列(itemID 列)的所有值都在一个列中

   SELECT id,name,  case WHEN itemid1 IS NOT NULL THEN  CONVERT(varchar(10), itemid1) + ','
else '' end + case WHEN itemid2 IS NOT NULL THEN CONVERT(varchar(10), itemid2) + ',' else
'' end + case WHEN itemid3 IS NOT NULL THEN CONVERT(varchar(10), itemid3) + ',' else ''
end + case WHEN itemid4 IS NOT NULL THEN CONVERT(varchar(10), itemid4) + ',' else '' end
as itemid FROM emp

现在您必须编写一个函数来对 ItemID 列的逗号分隔值进行排序并返回字符串。仅此而已..现在您可以轻松地进行精确匹配..但这不会提供良好的性能..

创建具有相同查询的计算列将提高性能..

关于mysql - 根据多列查找匹配行(列的顺序无关紧要),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19352715/

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