如果字段不相等,Mysql 查询会得到结果

标签 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 表中,所以我在 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

这是我的:

my table

我需要获取所有 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/

相关文章:

php - 临时表创建

php - 在 PHP 中删除 Angular2 应用程序中的数据

mysql - Eloquent laravel 有 raw join with where 子句

mysql - 使用 GROUP BY 对总记录编写 SQL 查询

php - Laravel 作业队列死锁与多个队列守护进程

mysql - 从一列匹配所有的几个表中选择全部

mysql - 错误的字符串值 : '\\xA0Consu...' for column even though column has utf8mb4 encoding

php - 使用 PHP 将 SQL 数据库表导出到 XML

php - 我的 PHP 函数没有返回任何值

mysql - 如何在 MySQL 中为时间戳添加随机间隔?