小编典典

SELECT多行WHERE匹配两个条件

sql

这将更好地显示在我的示例中:

我有一张桌子,存储着用户从一种大表格中得到的答案。每个表格有139个问题。这些问题存储在不同的表中,并在需要时与questionID结合在一起。对于每个用户,都有一个ID。现在,我需要进行过滤,以仅显示与特定问题匹配一个或
多个 答案的用户。

例如,我希望用户在问题14中回答为“是”,问题54不为空且问题100大于10的情况下。表的外观如下:

**userID** | **questionID** | **answer**

1            14               "yes"
1            54               "something"
1            100              "9"
2            14               "no"
2            54               "north
2            100              "50"
3            14               "yes"
3            54               "test"
3            100              "12"

结果,我只希望返回 userID 3,因为它满足所有条件。

使用ColdFusion可以轻松实现这一点,因为它允许在查询的结果中进行查询,但是在PHP中我找不到任何方法。重要的是,有机会添加随机数量的问题,在本示例中不仅是三个。


阅读 326

收藏
2021-03-23

共1个答案

小编典典

尝试,

SELECT userID
FROM tableName
WHERE   (questionID = 14 AND
        answer = 'yes' ) OR
        (questionID = 54 AND
        answer <> 'empty') OR
        (questionid = 100 AND
        answer > 10)
GROUP BY userID
HAVING COUNT(*) = 3
2021-03-23