在mysql中从表中获取唯一记录
我在mysql中遇到了一个问题。我需要从包含以下数据的表中获取某些记录集 让我向你们简要介绍一下桌子的情况。每个主要项目都有一个相似的项目,该相似的项目有一个大小 但我们必须显示上表中尺寸最小的独特项目 例如。。主项是A,它在X中的对应项,X也是主项,它在A中的相似项,但X也有相似项P,所以A,X,P都是相似的,在这些项中,最小的项是大小为4的P,所以我们通过查询从表中获取P 此外,记录为1-M,所有主要项均为相似项,所有相似项均存在于数据库的主要字段中。此表包含近3条lacs记录,用于一次获取和循环一条记录将不起作用 任何帮助都将不胜感激 谢谢 下颚香肠给定模式:在mysql中从表中获取唯一记录,mysql,Mysql,我在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-它可以正常运行一段时间,但是我们必须在整个表中运行这个查询,我们不知道哪个项与多少项相似,直到什么深度。。顺便说一下,谢谢你的努力和时间