繁体   English   中英

SELECT多行WHERE匹配两个条件

[英]SELECT multiple rows WHERE matching two conditions

在我的例子中显示更好:

我有表,存储用户的答案来自一个大表格。 每个表格有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中我没有找到任何方法。 重要的是有机会添加随机数量的问题,而不仅仅是这个例子中的三个。

尝试,

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

SQLFiddle演示

SELECT q.userID
  FROM questions q
  JOIN questions qq ON qq.userID=q.userID
       AND qq.questionID='54' AND qq.answer IS NOT NULL
  JOIN questions qqq ON qqq.userID=q.userID
       AND qqq.questionID='100' AND qqq.answer > 10
 WHERE q.questionID=14
   AND q.answer = 'yes'

你可以试试 :

SELECT questionID, answer
FROM table
WHERE ( questionID = 14 AND answer = 'yes' ) 
OR ( questionID = 54 AND answer != '' )
OR ( questionID = 100 AND answer > 10 ); 

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM