有选择地将WHERE子句中的用户ID应用于条目

时间:2013-04-15 09:17:39

标签: php mysql

我一直在IF和CASE上来回走动,并在其他地方发现了很多其他建议,试图找出如何根据类别和用户ID过滤掉某些条目。假设表user_posts包含许多用户发布的帖子。对于类别为“CAT_64”或“CAT_106”的帖子,我希望将结果限制为user_ID ='MIRA76'。但是,我仍然希望其他类别的其他用户获得结果。

user_posts

+----------+--------------+----------+-----------------+
| post_ID  | category_ID  | user_ID  |     content     |
+----------+--------------+----------+-----------------+
| 456FQ    | CAT_64       | MEK90    | TEXTUAL CONTENT |
| 754GD    | CAT_21       | MEK90    | TEXTUAL CONTENT |
| 616CZ    | CAT_106      | MIRA76   | TEXTUAL CONTENT |
| 714PA    | CAT_64       | MIRA76   | TEXTUAL CONTENT |
| 554WU    | CAT_26       | RON32    | TEXTUAL CONTENT |
| 451YD    | CAT_41       | RON32    | TEXTUAL CONTENT |
| 783TD    | CAT_21       | MIRA76   | TEXTUAL CONTENT |
| 156GL    | CAT_11       | MEK90    | TEXTUAL CONTENT |
| 274HD    | CAT_11       | HOM92    | TEXTUAL CONTENT |
+----------+--------------+----------+-----------------+

在示例条目中,对于类别“CAT_64”和“CAT_106”,仅采用user_ID'MIRA76'的类别,但对于其他类别,则没有此类限制。我该怎么做呢?除了第一个以外的那些是理想的结果。

3 个答案:

答案 0 :(得分:1)

您可以使用WHERE功能来限制查询结果文档 here

所以你可以使用像

这样的东西
WHERE user_ID='MIRA76' AND (category_id = 'CAT_64' OR category_id = 'CAT_106')

答案 1 :(得分:1)

SELECT * 
FROM user_posts
WHERE (user_ID = 'MIRA76' AND category_ID IN('CAT_64','CAT_106')) 
       OR user_ID != 'MIRA76'

更新

既然我已经仔细阅读了你的帖子非常并且也应用了一个假设,那么你似乎不希望{em>其他用途帖子在{ {1}}和CAT_64。是对的吗?如果是,则尝试此查询

CAT_106

答案 2 :(得分:0)

你有几个选择:

您可以将其拆分为两个查询 - 并加入输出,例如选择受限制的user_id,然后与其他查询结果(可能不包括之前选择的结果)结合使用。

OR

您可以在WHERE子句中查看使用条件语句,例如: CASE,OR,AND ......

如果你发布了你已经尝试过的代码 - 也许我可以在帮助方面更加具体。