Mysql 如果在SQL语句中

Mysql 如果在SQL语句中,mysql,sql,select,Mysql,Sql,Select,我想帮我说一句话,我有下一张桌子 publications ------------ id_publication, publication, flag, id_user_dest, id_user_source 它是一个发布应用程序,您可以在其中向其他用户发布,如果您希望发布私有的(因为这是标志),也可以选择发布,只需查看用户源用户和目标用户,而不必这样做 我有一个用户表,其中有数据用户和管理 会话,在表发布中查看源发布和目标发布的作者 例如,如果我在个人资料“Juan”中 我的程序向我吐出

我想帮我说一句话,我有下一张桌子

publications
------------
id_publication,
publication,
flag,
id_user_dest,
id_user_source
它是一个发布应用程序,您可以在其中向其他用户发布,如果您希望发布私有的(因为这是标志),也可以选择发布,只需查看用户源用户和目标用户,而不必这样做

我有一个用户表,其中有数据用户和管理 会话,在表发布中查看源发布和目标发布的作者

例如,如果我在个人资料“Juan”中

我的程序向我吐出了所有的出版物,这些出版物都是为$id_user_profile而写的,这相当于让他通过GET退出

SELECT * FROM publications 
WHERE id_user_dest= '$id_user_profile' AND flag=0;
(标志:0为公共,1为私有)

在这句话中,我会扔掉所有的用户资料出版物,不太私密,而且缺乏。。。如果该时间的会话等于id\u user\u dest或id\u user\u source,那么如果您向我显示发布标志0

如果我希望所有发布仅在标志=0(public)时显示,但如果标志=1且会话等于id\u user\u source或id\u user\u dest,则发布也会显示,这句话怎么说


感谢阅读:)

看起来您正在寻找的是
逻辑运算符:

SELECT * 
FROM   publications 
WHERE  flag = 0 OR '$id_user_profile' IN (id_user_dest, id_user_source)
编辑:
正如Michael Berkowski所指出的,此查询假设
标志
只能是
0
1
。如果此假设不正确,查询应明确处理
flag=1

SELECT * 
FROM   publications 
WHERE  flag = 0 OR 
       (flag = 1 AND '$id_user_profile' IN (id_user_dest, id_user_source))

我听不懂这个问题。你能分享一些样本数据和你想要达到的结果吗?对不起,我的英语:)问题是:如果我想要所有的出版物,那么这个句子怎么会只显示flag=0(public),但是如果flag=1,会话等于id\u user\u source或id\u user\u dest,然后,出版物也出现了,如果
0,1
可能不仅仅是
flag
,那么
flag=0或(flag=1和“$id\u user\u profile”在(id\u user\u dest,id\u user\u source))
@MichaelBerkowski,OP似乎建议
flag
可以是
0
1
,但你是对的。我在我的回答中添加了这一评论。谢谢