0

我一直在反复讨论 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”的类别,但对于其他类别则没有此类限制。我该怎么做呢?这里除了第一个之外的那些是理想的结果。

4

3 回答 3

1

您可以在此处WHERE使用函数来限制您的查询结果文档

所以你可以使用类似的东西

WHERE user_ID='MIRA76' AND (category_id = 'CAT_64' OR category_id = 'CAT_106')
于 2013-04-15T09:18:44.490 回答
1
SELECT * 
FROM user_posts
WHERE (user_ID = 'MIRA76' AND category_ID IN('CAT_64','CAT_106')) 
       OR user_ID != 'MIRA76'

更新

现在我已经非常仔细地阅读了您的帖子并且也应用了一个假设,看来您不希望其他用途的帖子位于CAT_64和中CAT_106。那正确吗?如果是,请尝试此查询

SELECT * 
FROM user_posts
WHERE (user_ID  = 'MIRA76' AND category_ID IN('CAT_64','CAT_106')) 
   OR (user_ID != 'MIRA76' AND category_ID NOT IN('CAT_64','CAT_106'))
于 2013-04-15T09:21:11.980 回答
0

你有几个选择:

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

或者

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

如果您发布您已经尝试过的代码 - 也许我可以更具体地提供帮助。

于 2013-04-15T09:21:04.247 回答