首页 > 解决方案 > 如何查找多个列值之间的差异

问题描述

我有一张表作为问题集,其中包含多个问题和答案。多个用户给出了答案。我想找到用户之间的问题或答案不同的问题集 ID。例如,1 个问题集没有区别,因为所有用户给出的问题和答案的相同组合,但问题集 2 不同。

在此处输入图像描述

标签: sqlpostgresql

解决方案


你试过EXISTS函数吗?

SELECT DISTINCT questionset
FROM table_name tab1 
WHERE (NOT EXISTS (SELECT 1
        FROM table_name tab2
        WHERE tab1.questionset = tab2.questionset
        AND tab1.question = tab2.question
        AND tab1.answer = tab2.answer
        AND tab1.user_id <> tab2.user_id )
OR NOT EXISTS (SELECT 1
        FROM table_name tab3
        WHERE tab1.questionset = tab3.questionset
        AND tab1.question = tab3.question 
        AND tab1.user_id <> tab3.user_id )) ;

推荐阅读