table ab:
partyid conatctpurpose
1 general
1 shipping
1 phone
1 fax
2 general
2 shipping
2 phone
3 phone
3 fax
3 mail
4 GENERAL
5 fax
每个partyid都应分配强制性的3个联系目的(一般,运输,电话)
partyid可以提供其他可选的联系方式
写一个查询以返回没有分配上述强制性联系目的的partyid。
答案 0 :(得分:1)
虽然NOT IN不是最佳查询,但如果数据集不是很大,则可以使用它。
Select partyid from table_ab where contactpurpose NOT IN ('general','shipping','phone');
答案 1 :(得分:1)
试试这个:
SELECT partyid
FROM ab
WHERE conatctpurpose IN ('general','shipping','phone')
GROUP BY partyid
HAVING COUNT(DISTINCT conatctpurpose) < 3
答案 2 :(得分:0)
@above感谢各位朋友的支持。最后我得到了我的解决方案。
- 很多人教这是一个家庭作业,noob问题等。 - 这是我们项目的数据检查报告
(从(SELECT party_id,count(distinct contact_mech_purpose_type_id)中选择party_id作为c FROM party_contact_mech_purpose 哪里 contact_mech_purpose_type_id in ( 'BILLING_LOCATION', 'PAYMENT_LOCATION', 'SHIPPING_LOCATION', 'SHIP_ORIG_LOCATION') group by party_id)t其中c <4)
联合
(从party_contact_mech_purpose中选择party_id,其中party_id不在(SELECT party_id FROM party_contact_mech_purpose) 哪里 contact_mech_purpose_type_id in ( 'BILLING_LOCATION', 'PAYMENT_LOCATION', 'SHIPPING_LOCATION', 'SHIP_ORiG_LOCATION') group by party_id))
按party_id订购