SQL - 如何排除UNIQUE返回的行

时间:2014-05-15 18:17:42

标签: mysql sql unique rows

希望有人可以提供帮助。

我正在运行一个返回类似内容的查询。

http://i.imgur.com/BMAaFB6.png

这是我目前的查询:

SELECT i.prtnum, i.lodnum, i.lotnum, i.untqty, i.ftpcod, i.invsts
FROM inventory_view i, locmst m
WHERE i.stoloc = m.stoloc
AND m.arecod = 'PART-HSY'
ORDER BY i.prtnum

如果您正在查看图片,我需要查询排除第3行等行。 (00005-86666-000)

4 个答案:

答案 0 :(得分:0)

您没有提供太多理由来解释为什么要排除该行,但您可以按照prtnum排除,就像您要求的那样:

SELECT i.prtnum, i.lodnum, i.lotnum, i.untqty, i.ftpcod, i.invsts
FROM inventory_view i, locmst m
WHERE i.stoloc = m.stoloc
  AND m.arecod = 'PART-HSY'
  AND i.prtnum NOT IN(SELECT i2.prtnum  FROM inventory_view i2, locmst m2 
                                        WHERE i2.stoloc = m2.stoloc AND m2.arecod = 'PART-HSY'
                                        GROUP BY i2.prtnum HAVING COUNT(*) = 1)
ORDER BY i.prtnum

答案 1 :(得分:0)

如下:

SELECT      i.prtnum,
            i.lodnum,
            i.lotnum,
            i.untqty,
            i.ftpcod,
            i.invsts
FROM        inventory_view i,
            locmst.m
WHERE       i.stoloc = m.stoloc
AND         m.arecod = 'PART-HSY'
AND         i.prtnum IN
(
    SELECT      prtnum
    FROM        inventory_view j
    HAVING      count(prtnum)>1
    GROUP BY    prtnum
)

答案 2 :(得分:0)

SELECT i.prtnum, i.lodnum, i.lotnum, i.untqty, i.ftpcod, i.invsts
FROM inventory_view i, locmst m
WHERE i.stoloc = m.stoloc
AND EXISTS (SELECT * FROM Inventory_view k 
                     WHERE k.prtnum == i.prtnum AND k.id <> i.id)
AND m.arecod = 'PART-HSY'
ORDER BY i.prtnum

其中i.id/k.id是您的表格ID。它效率有点低,但它应该可以工作。

答案 3 :(得分:0)

有几种方法可以做你所要求的。如果我理解正确,它只是排除在给定列中具有值的行,这些行在表中只显示一次。如果是这样,你可以这样做:

SELECT i.prtnum, i.lodnum, i.lotnum, i.untqty, i.ftpcod, i.invsts
FROM inventory_view i
JOIN locmst m ON i.stoloc = m.stoloc AND m.arecod = 'PART-HSY'
JOIN inventory_view i1 ON i1.prtnum = i.prtnum AND i1.lodnum != i.lodnum
ORDER BY i.prtnum

此方法将确保返回的行具有与同一表中其他记录的prtnum匹配的prtnum。我假设lodnum是你的形象的许可证号。