如果条件在mysql

问题描述:

我有一个联系表,我希望查询何时存在某个条件。我试过下面的查询,但得到一个语法错误。如果条件在mysql

​​
+0

这是您的确切SQL吗? “contactDeleted”后面有一个没有配对的反勾号字符 – nybbler 2012-02-16 06:00:51

+0

你最好用单词描述你想要的东西,因为错误的sql查询字面上没有解释任何东西 – zerkms 2012-02-16 06:00:59

+0

@nybbler:是否反向是唯一让你困惑的东西? ;-) – zerkms 2012-02-16 06:01:28

如果我正确理解你的问题(这是很难与缺乏信息的您提供。采样的数据集和预期结果通常是有益的),那么我不认为你需要的IF在所有的你想。以下将返回未删除且具有(visibility =“private”和userId = 1)或(visibility =“group”和group = 3)的联系人

SELECT * 
FROM contact_details 
WHERE contactDeleted = 0 
    AND ( 
     (contactVisibility = "public") 
     OR 
     (contactVisibility = "private" AND contactUserId = 1) 
     OR 
     (contactVisibility = "group" AND contactGroup = 3) 
    ) 
+0

他们是一种表格中的3种联系方式。公共,私人和团体,如果联系是公开的,他们不需要任何条件。如果联系人是私人联系人,我们应该挖掘(这应该有我的id在contactUserId)。如果将他们的组合分组放在其他表中,那么groupId值将保存在contactGroup中,并且它应该检查与我的组匹配的天气。 – 2012-02-16 06:23:45

+0

@ShankarSwamy这些笔记应该在你的问题。如果你的contactUserID = 1,那么你的contactGroup = 3,或者是否需要根据其他一些内容搜索这些内容?我已更新为accountVisibility =“public” – nybbler 2012-02-16 06:27:42

我假设你想使用的IF()功能,而不是声明这是存储功能..

参考this link关于更多的信息。

请注意,您已经摆在那里2个select语句,在自定义的返回值应该是。那么,你是返回一个SELECT *...现在会发现,在上层的SQL语句,你有一个AND..所以你基本上可以写AND SELECT *..,这将给你的语法错误。

尝试使用.. AND x IN (SELECT *) ..来查找x是否在返回值中。

也让我列出this link利用现有的和良好的书面答复这也可能适用于您的问题。