我有这样的查询:
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
这就是我所拥有的:
我需要获取Manuf_nr
相等且Vprijsexcl
不相等的所有数据。
答案 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_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)
的产品的所有信息:
{{1}}