1

我有一个这样的查询:

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。任何人都知道如何做到这一点?

更新:字段priceArtikels表中,所以我在 a 下选择它。* 我更改了我的查询,所以它看起来像这样

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

这就是我所拥有的:

我的桌子

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

4

2 回答 2

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
于 2013-06-19T15:17:00.050 回答
0

关于什么

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

其中列出了Manuf_nr,Vprijsexcl不唯一的组合。

编辑:

要获取有关其具有独特性的产品的所有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)
于 2013-06-19T15:29:51.090 回答