例如,我有一個頭表,其中包含一個列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. C#LINQ比較列表值
- 4. 比較列表的值
- 5. Worksheet_Change比較值列表
- 6. 比較列值
- 7. 比較列表
- 8. 比較列表
- 9. 比較列表
- 10. 如何比較列表的列值
- 11. SQL查詢單表,比較表列值
- 12. 比較列表和表格的值php
- 13. 比較列的值
- 14. VBA列值比較
- 15. 與列表比較列表
- 16. 用於比較列值的表的行比較的SQL查詢
- 17. 比較Kotlin的可比較列表
- 18. 比較列表python
- 19. 比較java列表
- 20. Python:比較列表
- 21. 比較Java列表
- 22. Java - 比較列表
- 23. Javers比較列表
- 24. Python:列表比較
- 25. 比較C#列表
- 26. Python浮點列表值比較
- 27. 日期值比較Python列表
- 28. 比較Java中的兩個表列值
- 29. 比較mysql表中的列值
- 30. 比較字典中的列表的值
如果你編輯了你的文章,並且每個表格只顯示了每個表格的列,那麼這將會很有幫助。 – octopusgrabbus