2015-10-02 71 views
1

嗨,我想写一个查询使用,如果在where子句 请建议我怎么能做到这一点我在那里的条件如下如果条件在MySQL查询生成的条款动态

IF(`page_type` ==1, `pages NOT LIKE '%ads/indian-institute-of-technology-bombay.html%' 
OR pages NOT LIKE '%ads/*%' OR pages NOT LIKE '%indian-institute-of-technology-bombay.html/*%'` ,` pages LIKE '%ads/indian-institute-of-technology-bombay.html%' 
OR pages LIKE '%ads/*%' OR 
pages LIKE '%indian-institute-of-technology-bombay.html/*%'`) 

全面查询

SELECT * FROM `app_slides` WHERE IF(`page_type` ==1, `pages NOT LIKE '%ads/indian-institute-of-technology-bombay.html%' OR pages NOT LIKE '%ads/*%' OR pages NOT LIKE '%indian-institute-of-technology-bombay.html/*%'` ,` pages LIKE '%ads/indian-institute-of-technology-bombay.html%' OR pages LIKE '%ads/*%' OR pages LIKE '%indian-institute-of-technology-bombay.html/*%'`) 
+0

您能向我们展示您的完整查询,谢谢。 –

+0

是的,先生给我一分钟 – Deepesh

+0

你能详细解释一下你想用if语句做什么。如果你尝试执行查询,是否有错误? – brenners1302

回答

0

IF是这样工作的:

IF(<condition>, <value if true>, <value if false>) 

因此,作为一个例子

SELECT IF('a' = 'a', 1, 0); //will return 1 
SELECT IF('a' = 'b', 1, 0);//will return 0 

WHERE查询 使用IF下面的例子演示了如何使用IF in a WHERE查询。

SELECT ... 
WHERE ... 
AND IF(myfield = 'somevalue', 1, 0) = 1 
0

这不应该在一个if中完成,而应该用逻辑运算符来表示。

select ... from ... where (`page_type` == 1 and ...) 
or (`page_type` <>1 and ...) 

您可以通过重写为联合而不是使用或在where条件中进行优化。