Mysql 具有不同值的相同id的SQL查询结果返回集

Mysql 具有不同值的相同id的SQL查询结果返回集,mysql,sql-server,Mysql,Sql Server,我需要运行比较并返回差异。我发现很难用有效的语法来表达SQL查询。逻辑在那里,我可以解释,但语法暗示我,你能帮我吗 我在一个模式中有1个表位置,其中包含2个主键“locationID”和“materialID”。现在我的桌子上有3个位置——PlayM PlayB和Ing。通常情况下,我在每个地点都有可用的物料 我需要检查的是每个locationID上每个materialID的整数值持续时间。如果其中一个时间段与其他时间段不匹配,则返回的结果将包含每个位置的所有实质性信息,且时间段中存在差异 榜样

我需要运行比较并返回差异。我发现很难用有效的语法来表达SQL查询。逻辑在那里,我可以解释,但语法暗示我,你能帮我吗

我在一个模式中有1个表位置,其中包含2个主键“locationID”和“materialID”。现在我的桌子上有3个位置——PlayM PlayB和Ing。通常情况下,我在每个地点都有可用的物料

我需要检查的是每个locationID上每个materialID的整数值持续时间。如果其中一个时间段与其他时间段不匹配,则返回的结果将包含每个位置的所有实质性信息,且时间段中存在差异

榜样

+------------+------------+----------+
| LOCATIONID | MATERIALID | DURATION |
+------------+------------+----------+
| PlayM      | Clip1      |      626 |
| PlayB      | Clip1      |      626 |
| Ing        | Clip1      |      626 |
| PlayM      | Clip2      |      600 |
| PlayB      | Clip2      |      590 |
| Ing        | Clip2      |      600 |
+------------+------------+----------+
Clip1不会返回结果,因为所有位置的持续时间都相同。但是,剪辑2应报告所有3个,因为其中一个持续时间不同

我的示例查询如下所示。。。注:当提及不平等时,我迷失了方向:

SELECT * FROM locations
WHERE materialID IN (SELECT materialID WHERE duration <> 
你能帮忙吗

谢谢

SQL学习

如果您使用的是SQL SERVER:

;with cte as(
    select
        *,
        cc = count(*) over(partition by MaterialId),
        ccc = count(*) over(partition by MaterialId, Duration)
    from Locations
)
select 
    LocationId,
    MaterialId,
    Duration
from cte
where cc <> ccc

你在使用什么数据库?适当地标记问题。