2013-06-19 59 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