如何为此构建子查询

How to build subquery for this

我有一个 table 具有字段即。

id,is_public,added_by,is_delete

场景可能性:

当前用户可以看到包含 :

的记录
  1. added_by admin = 0 OR own id
  2. added_by another user AND is_public = 1
  3. **is_deleted=0**

current user's and admin's record is_public='0' 必须显示记录

SQLFIDDLE

我的查询:

SELECT * FROM tblname 
WHERE 
is_delete='0' 
AND (added_by='0' OR added_by='15') //ex. current user id = 15
AND is_public='1'

但此查询未提供其他用户的 is_public='1' 记录

请帮忙

您需要在 select:

中使用 OR 运算符
SELECT * FROM tblname 
WHERE 
is_delete='0' AND (
   (added_by='0' OR added_by='15') //ex. current user id = 15
   OR is_public='1'
)

如果用户应该看到任何自己的记录被删除或未删除,那么您可以使用此 sql:

SELECT * FROM tblname 
WHERE 
added_by='15' //ex. current user id = 15
OR (
   is_delete='0' AND (added_by='0' OR is_public='1')
);

怎么样:

SELECT * FROM tblname 
WHERE 
is_delete='0' AND (
(added_by='0' OR added_by='15') //ex. current user id = 15
OR is_public='1')

这样你只显示未删除的帖子:来自同一用户或public

更新: 如果您还希望显示当前用户已删除的帖子(因此用户 0 / 14 的所有帖子,并且只有 public 而不是其他用户删除的帖子:

SELECT * FROM temp 
WHERE 
(
   (user_id='0' OR user_id='15') OR
   (is_delete='0' AND  is_public='1')
)

我又试了几次,成功了,谢谢大家的支持:)

SELECT * FROM tblname 
WHERE 
is_delete = '0' AND 
( user_id = '0' OR user_id = '15' OR is_public = '1' )