我有一个select查询,我在查询设计工具的SQL视图中设计了它。根据我的一些结果,我发现了相同记录的重复。因为表中没有多个,只有查询(相同的主键)。这是原始查询。
SELECT t1.*
FROM Inventory AS t1 INNER JOIN Inventory AS t2 ON
t1.Part_ID = t2.Part_ID WHERE (t1.Inventory_ID<>t2.Inventory_ID);
我的目的是向Inventory
查询具有相同Part_ID
(FK)但不同Inventory_ID
(PK)的记录。 part_ID
(FK)和location_ID
(FK)之间有一个复合键,如果这有任何区别的话。
我已将此查询更改为:
SELECT DISTINCT t1.*
FROM Inventory AS t1 INNER JOIN Inventory AS t2 ON t1.Part_ID = t2.Part_ID
WHERE (t1.Inventory_ID<>t2.Inventory_ID);
这会删除重复的记录,但是,我不相信我的原始查询应该生成重复数据结果。我担心这表明我的桌子有问题吗?
我的表格如下:
由于
答案 0 :(得分:1)
问题是您可能在select的INNER JOIN侧出现了多个part_ID。因此,如果在其他2个位置存在具有相同part_ID和不同inventory_ID的零件,您将获得重复。
要检查这一点,您可以对一些重复项进行测试,或者使用查询的INNER JOIN侧的GROUP BY指令重写原始查询。