如果字段不相等,则Mysql查询获取结果

时间:2013-06-19 13:51:51

标签: 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的行是否相等。谁知道怎么做?

更新: 字段price位于Artikels表中,因此我在。*下选择它 我改变了我的查询,看起来像这样

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)

但需要太长时间。谁知道如何加快速度? 更新:字段price是字段Vprijsexcl

这就是我所拥有的:

my table

我需要获取Manuf_nr相等且Vprijsexcl不相等的所有数据。

2 个答案:

答案 0 :(得分: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

答案 1 :(得分: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) 的产品的所有信息:

{{1}}