IF在Sentence SQL中

时间:2015-01-24 21:14:08

标签: mysql sql select

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

publications
------------
id_publication,
publication,
flag,
id_user_dest,
id_user_source

这是一个出版物的应用程序,您可以在其中发布给其他用户,如果您希望发布私有(因为这是标志),并且只是查看用户源和目标用户,则可以选择发布但不是那句话。

我有一个表用户,其中包括数据用户和管理 会议,在表PUBLICATIONS中查看谁制作了源出版物和目的地出版物。

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

我编写了一些程序,用于向我发送所有已经为$ id_user_profile发布的出版物,这些出版物等同于GET将他带出来

SELECT * FROM publications 
WHERE id_user_dest= '$id_user_profile' AND flag=0;

(标志:0是公开的,1是私人的)

在这句话中,我将抛出用户配置文件的所有出版物,更少私有,并且缺少...如果SESSION那个时间等于id_user_dest或id_user_source,那么如果你向我展示出版物Flag 0。

如果我希望所有出版物只显示flag = 0(public),那么句子怎么样,但如果flag = 1且session等于id_user_source或id_user_dest,那么出版物也会出现?

感谢阅读:)

1 个答案:

答案 0 :(得分:1)

似乎or逻辑运算符是您正在寻找的:

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

编辑:
正如Michael Berkowski所指出的,此查询假设flag只能是01。如果此假设不正确,则查询应明确处理flag=1

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