2014-05-15 52 views
0

希望在這裏有人可以得到一些幫助。SQL - 如何排除UNIQUE返回的行

我正在運行一個查詢,返回類似這樣的東西。

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)

回答

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 
+0

是的,我已經做了這樣的事情。不過,我很感激幫助。我正在尋找一種方法來排除非唯一prtnum的,而不必硬編碼IN子句值。 – user3642066

+0

我糾正了我的答案。 –

+0

這仍然硬編碼的排除。 –

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 
) 
+0

我也試過類似的東西,它只會返回一行(我知道有至少400行在表inventory_view中有相同的prtnum – user3642066

+0

我編輯它,這樣做的工作嗎?此外,性能可能會根據主要查詢是否有一個'ORDER BY'子句不同而有所不同 –

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。這有點低效,但它應該起作用。

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是你的圖片的許可證號。

+0

我試過了,但收到了「查詢中超出的最大行數」錯誤。相信 該查詢不按預期工作,因爲它應該縮短結果集不增加。 – user3642066