2015-07-13 42 views
2

我有三个表,如用户,question_list和private_list。 我列出了用户在我的主页上创建的问题。用户可以创建一些私人问题。所以如果另一个用户在private_list表中,他可以看到另一个用户的私人问题。如果mysql中的条件选择查询

SELECT DISTINCT A.*, 
       B.* 
       FROM (
       user AS A 
       INNER JOIN question_list AS B ON B.user_id = A.id 
       ) 
ORDER BY created_at DESC 

我没有得到如何添加if条件,如果登录用户ID private_list他可以看到其他用户的私人问题。我希望有人在这个问题上帮助我。我的表结构如下...

USER:

id(int AI) 
name(varchar) 
created_at(datetime) 

question_list

id(int AI) 
user_id(int) 
question(varchar) 
is_private(tinyint) 
created_at(datetime) 

private_list

id(int AI) 
user_id(int) 

感谢。

+0

请分享您的表格结构。 – Mureinik

+0

为什么不有一个列表? – Strawberry

+0

我用表格结构更新了我的问题。 – Hardik

回答

2

最后我得到了解决方案。

SELECT DISTINCT A.*, 
       B.* 
       FROM (
       user AS A 
       INNER JOIN question_list AS B ON B.user_id = A.id 
       ) 
WHERE EXISTS (SELECT * FROM private_list C WHERE C.user_id = A.id AND C.user_id = B.user_id) OR B.is_private = 0 ORDER BY created_at DESC