例如,我有一个头表,其中包含一个列id和一个带有id,head-id(引用head-table => 1到N)的位置表和一个值。现在我在头表中选择一行,比如说ID 1.我查看位置表并找到2行,它们引用了头表,并且具有值1337和1338.现在我想要选择所有头也是2个位置,这些值为1337和1338. position-id不一样,只是值,因为它不是M到N的关系。任何人都可以告诉我一个SQL语句?我不知道要完成它:/比较值列表
比较值列表
回答
假设该值不在位置表中给定的headid重复,并且它从不为NULL,那么可以使用以下逻辑来执行此操作。在位置表上完成一个完整的外部连接,以便处理您关心的特定头部位置。然后检查是否有完全匹配。
下面的查询做到这一点:
select *
from (select p.headid,
sum(case when p.value is not null then 1 else 0 end) as pmatches,
sum(case when ref.value is not null then 1 else 0 end) as refmatches
from (select p.value
from position p
where p.headid = <whatever>
) ref full outer join
position p
on p.value = ref.value and
p.headid <> ref.headid
) t
where t.pmatches = t.refmatches
如果你有在值NULL值,你可以适应这些使用聚结。如果你有重复,你需要更清楚地说明在这种情况下要做什么。
假设你有:
Create table head
(
id int
)
Create table pos
(
id int,
head_id int,
value int
)
,你需要找到值重复,那么我会使用:
Select distinct p.head_id, p1.head_id
from pos p
join pos p1 on p.value = p1.value and p.head_id<>p1.head_id
where p.head_id = 1
特定head_id,或不过去那里每一个head_id
** **头ID ** **位置ID ,head_id,值 1,1,1337 2,1,1338 3,2,1330 4,3, 1337 4,3,1338 我选择头的第一行...所以我得到的位置与id 1和2.现在我想要所有具有相同值(位置)的头。所以我想要的结果是head-id 1和3,因为id 3的头也有2个值为1337和1338的位置。values-column是一个字符字段,不是整数。 – dcast
然后'从...中选择不同的p.head_id应该给你你想要的。值类型无关紧要,只是为了举例说明。 –
- 1. 列表值比较
- 2. 比较列表值
- 3. 比较列表的值
- 4. C#LINQ比较列表值
- 5. Worksheet_Change比较值列表
- 6. 比较列值
- 7. 比较列表
- 8. 如何比较列表的列值
- 9. SQL查询单表,比较表列值
- 10. 比较列的值
- 11. VBA列值比较
- 12. 与列表比较列表
- 13. 用于比较列值的表的行比较的SQL查询
- 14. Java - 比较列表
- 15. Javers比较列表
- 16. Python:比较列表
- 17. 比较列表python
- 18. 比较java列表
- 19. 多个列表值比较Java
- 20. 使用数组来比较表列值
- 21. 比较mysql表中的列值
- 22. 比较Java中的两个表列值
- 23. 比较字典中的列表的值
- 24. 如何比较2个列表值?
- 25. 日期值比较Python列表
- 26. Python浮点列表值比较
- 27. 如何比较Sharepoint列表项目值?
- 28. 比较列表W /子表
- 29. 比较2列的值
- 30. CSV比较列值python
如果你编辑了你的文章,并且每个表格只显示了每个表格的列,那么这将会很有帮助。 – octopusgrabbus