在mysql中从表中获取唯一记录

在mysql中从表中获取唯一记录,mysql,Mysql,我在mysql中遇到了一个问题。我需要从包含以下数据的表中获取某些记录集 让我向你们简要介绍一下桌子的情况。每个主要项目都有一个相似的项目,该相似的项目有一个大小 但我们必须显示上表中尺寸最小的独特项目 例如。。主项是A,它在X中的对应项,X也是主项,它在A中的相似项,但X也有相似项P,所以A,X,P都是相似的,在这些项中,最小的项是大小为4的P,所以我们通过查询从表中获取P 此外,记录为1-M,所有主要项均为相似项,所有相似项均存在于数据库的主要字段中。此表包含近3条lacs记录,用于一次获

我在mysql中遇到了一个问题。我需要从包含以下数据的表中获取某些记录集

让我向你们简要介绍一下桌子的情况。每个主要项目都有一个相似的项目,该相似的项目有一个大小

但我们必须显示上表中尺寸最小的独特项目

例如。。主项是A,它在X中的对应项,X也是主项,它在A中的相似项,但X也有相似项P,所以A,X,P都是相似的,在这些项中,最小的项是大小为4的P,所以我们通过查询从表中获取P

此外,记录为1-M,所有主要项均为相似项,所有相似项均存在于数据库的主要字段中。此表包含近3条lacs记录,用于一次获取和循环一条记录将不起作用

任何帮助都将不胜感激

谢谢 下颚香肠

给定模式:

CREATE TABLE similar_test ( id int(11) NOT NULL DEFAULT '0', 
Stock varchar(20) NOT NULL, SimilarStock varchar(20) NOT NULL, 
ItemSize decimal(18,2) DEFAULT '0.00' ) ENGINE=InnoDB DEFAULT CHARSET=latin1; 
请检查:我正在考虑1级深度:

select * , s.ItemSize as minSize from similar_test as p
 join similar_test a s on s.Stock= p.SimilarStock
 where p.Sock='A'
 order by  s.itemSize 
 limit 1
如果这不能解决您在评论中提到的问题,其他选项包括:

a。创建另一个表,该表将保存所需的预计算值

b。编写一个存储过程,在N未指定的情况下,将项列表一直遍历到N个级别 在这种情况下(正如我所怀疑的)

c。使用PHP/或您正在使用的任何其他语言进行排序和分组

这也可能对您有所帮助

关于

p也有类似的项目-Q,那么大小应该是8。是否正确?您能显示表模式吗?@Devart--Yes P具有类似的项Q,因此应该使用查询获取Q,因为它在表中只有一个db@sakhunzai-表架构如下所示。创建表
similar\u test
id
int(11)非空默认值'0',
Stock
varchar(20)非空,
SimilarStock
varchar(20)非空,
ItemSize
decimal(18,2)默认值'0.00')引擎=InnoDB默认字符集=latin1;
size
属于哪一列?@sakhunzai-它可以正常运行一段时间,但是我们必须在整个表中运行这个查询,我们不知道哪个项与多少项相似,直到什么深度。。顺便说一下,谢谢你的努力和时间