2013-06-19 85 views
1

我有這樣的查詢:MySQL查詢得到的結果,如果字段不等於

select a.*, ag.Winstpercentage from Artikels a 
inner join Artikelgroep ag on a.`Artgroep`=ag.Groepcode 
where a.`Manuf_nr` in (some array) 

在此查詢我有price場。我需要爲所有這些字段比較Manuf_nr,如果相同,我需要檢查price字段對於具有相同Manuf_nr的行是不相等的。任何人都知道如何做到這一點?

UPDATE: 場priceArtikels表,所以我選擇它下* 我改變了我的查詢,以便它看起來像這樣

SELECT * 
FROM `Artikels` 
inner join (select * from Artikels) as totals 
     on Artikels.`Manuf_nr` = totals.`Manuf_nr` and 
      Artikels.`Vprijsexcl`!= totals.`Vprijsexcl` 
where Artikels.`Manuf_nr` in 
(select Manuf_nr from Artikels 
group by Manuf_nr having count(*) >1) 

,但它的時間太長。任何人都知道如何加快速度? UPDATE:場price是場Vprijsexcl

這是我有:

my table

,我需要得到所有數據,其中Manuf_nr等於和Vprijsexcl是不相等的。

+0

你能提供的樣本數據和預期的結果? – Uriil

+0

我不確定我的理解爲什麼您需要此結果... – MrCkobe

+0

我們在'此查詢'中看不到價格字段。這個問題當然需要更多細節。 – Sebas

回答

1

嘗試:

SELECT * 
FROM `Artikels` 
inner join Artikels as totals 
     on Artikels.`Manuf_nr` = totals.`Manuf_nr` and 
      Artikels.`Vprijsexcl`!= totals.`Vprijsexcl` 

- 的where ... in (subquery)條款是多餘的,因爲主要的查詢可以從具有在Artikels表多行廠家返回的結果。

更新:要看到的只是不同的價格同一製造商,請嘗試:

SELECT `Manuf_nr`, group_concat(distinct `Vprijsexcl`) prices 
FROM `Artikels` 
GROUP BY `Manuf_nr` 
HAVING count(distinct `Vprijsexcl`) > 1 
+0

無法從此查詢中獲得結果...或者需要超過幾分鐘的時間才能獲得結果 – MrCkobe

+0

@MrCkobe:我添加了一個查詢,該查詢應該更快 - 它是如何比較的? –

+0

我得到blob的價格 – MrCkobe

0

什麼

SELECT Manuf_nr, Vprijsexcl, COUNT (*) 
FROM Artikels 
GROUP BY Manuf_nr, Vprijsexcl 
HAVING COUNT (*) > 1 

其中列出了Manuf_nrVprijsexcl組合不唯一。

編輯:

要獲取有關其擁有獨特的Vprijsexcl產品的所有信息他們Manuf_nr

SELECT Artikels.* 
FROM Artikels 
INNER JOIN (SELECT Manuf_nr, Vprijsexcl, COUNT (*) 
      FROM Artikels 
      GROUP BY Manuf_nr, Vprijsexcl 
      HAVING COUNT (*) = 1) AS A 
USING (Manuf_nr, Vprijsexcl) 
+0

使用這個查詢,我得到每個'Manuf_nr','Vprijsexc1'只有一行,我不知道'Vprijsexc1'值與其他'Vprijsexc1'字段具有相同'Manuf_nr'的區別。 – MrCkobe

+0

它爲您提供'Manuf_nr, Vprijsexcl'組合不是獨特的。如果你想列出不同的,請將COUNT(*)> 1'更改爲COUNT(*)= 1'。 –

+0

但問題是我需要檢查'Manuf_nr'是否相同,然後比較'Vprijsexcl',然後如果'Vprijsexcl'不同我會顯示它 – MrCkobe