繁体   English   中英

SQL在同一列中找到匹配项

[英]SQL find matches in same column

我正在为班级分配作业,并且该问题要求在同一张表的同一列中找到匹配项。 并列出所有具有此匹配项的行。 让我发布问题以更好地解释它:

列出同一物料类别中每对零件的零件编号,零件说明和物料类别。 (例如,一对这样的零件将是AT94零件和FD21零件,因为这两个零件的物品类别均为HW。)

我不确定要使用哪个函数来执行此操作。 老师只是希望我们按班级将成绩分组吗?

我将为您提供部分答案:

您需要配对。 因此,从本质上讲,您将将具有2个计数的项目分组。

祝好运!


附录:

请记住,对SELECT之后不在GROUP BY中的所有项目使用汇总功能。 根据您使用的数据库引擎的不同,可以使用串联函数。

您正在寻找分组依据。 由于这是家庭作业,因此我将不提供具体示例,但语法通常是

SELECT [COLUMNS]
FROM [TABLE]
WHERE [PREDICATE] --Okay, all that's normal in SQL
GROUP BY [COLUMN] --This column should be a named column in your SELECT statement.

更新:正如MPelletier所说,您还希望“拥有”

狩猎愉快。

通常情况下,老师,研究生助手或班上最聪明的孩子能够更好地解释老师的意图。 但是,您不需要GROUP即可解决此问题。

从零件ORDER BY BY item_class中选择part_nr,part_desc,item_class

SELECT F.ITEM_NUM, S.ITEM_NUM, F.DESCRIPTION, S.DESCRIPTION, F.CATEGORY, S.CATEGORY
FROM ITEM F, ITEM S
WHERE F.CATEGORY = S.CATEGORY
AND F.ITEM_NUM < S.ITEM_NUM
ORDER BY F.ITEM_NUM, S.ITEM_NUM;`

您应该将表与自身连接。

这样的事情可能会让您走上正轨:

select <list of fields> 
from parts p1
inner join parts p2 on p1.item_class = p2.item_class
where p1.part_number < p2.part_number

该声明的结果有两个警告。

例如:

您将在(a,b)和(b,a)表格上得到重复

您还将获得与它本身相连的每个项目(a,a)。

编辑:

修复了警告(通过添加where子句)。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM