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