Sql 如何检查仅为一个值绑定到其相关表的id
作为测试的一部分,我有两个表需要检查UCCID是否只绑定到一个BUYID。UCCID对于我的表应该是唯一的。但是BUyid可以有多个UCCID。但是UCCID应该绑定到唯一的(只有一个)BUYID 我尝试了下面的查询,但我没有得到我正在调查的结果?有人能帮忙吗?我希望下面的查询返回0,以便UCCID绑定到单个BUYIDSql 如何检查仅为一个值绑定到其相关表的id,sql,sql-server,tsql,Sql,Sql Server,Tsql,作为测试的一部分,我有两个表需要检查UCCID是否只绑定到一个BUYID。UCCID对于我的表应该是唯一的。但是BUyid可以有多个UCCID。但是UCCID应该绑定到唯一的(只有一个)BUYID 我尝试了下面的查询,但我没有得到我正在调查的结果?有人能帮忙吗?我希望下面的查询返回0,以便UCCID绑定到单个BUYID SELECT COUNT(*) FROM dbo.activityBase ab JOIN (SELECT eb.BuyID FROM dbo.Equipme
SELECT COUNT(*) FROM dbo.activityBase ab
JOIN (SELECT eb.BuyID FROM dbo.EquipmentBase eb
WHERE eb.UccID IS NOT NULL
GROUP BY eb.BuyID
HAVING COUNT(eb.BuyID)=1)c
ON c.BuyID = ab.BuyID
如果我理解正确(并且您的问题不是非常清楚),如果您想识别
UccID
的任何值,并且这些值的记录中存在多个不同的BuyID
(在两个表中),您可以使用:
SELECT UccId, COUNT(*)
FROM
(
SELECT DISTINCT BuyID, UccID FROM EquipmentBase
UNION
SELECT DISTINCT BuyID, UccID FROM activityBase
) AS DistinctCombos
GROUP BY UccId HAVING COUNT(*) > 1
这将使用
FROM
子句中的子查询返回两个表中两个字段的所有组合,然后检查这些结果以找到任何UccID
值,这些值具有多个不同的BuyID
值。您可以选择“UccID对于我的表应该是唯一的”对于这两个表,您能提供示例数据吗?您希望实现什么?
SELECT UccId, COUNT(*)
FROM
(
SELECT DISTINCT BuyID, UccID FROM EquipmentBase
UNION
SELECT DISTINCT BuyID, UccID FROM activityBase
) AS DistinctCombos
GROUP BY UccId HAVING COUNT(*) > 1