我有这样的查询:
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
表中,所以我在 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
不相等的数据。
最佳答案
尝试:
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
关于如果字段不相等,Mysql 查询会得到结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17193077/