2
我有这个疑问MySQL的条件选择基于查询的WHERE子句
SELECT column1 FROM Table1 WHERE column1 LIKE CONCAT('%', :regex, '%') OR (column2 IS NOT NULL AND column2 LIKE CONCAT('%', :regex, '%')
返回总是column1
值如果Table1
满足创纪录的where子句。但我想要的是,如果满足where子句的第一部分LIKE CONCAT('%', :regex, '%')
,则返回column1
值,如果满足第二部分(column2 IS NOT NULL AND column2 LIKE CONCAT('%', :regex, '%')
,则返回column2
值。 我应该如何修改查询来实现这个结果?
大,查询的工作原理是我想要的。但是我还有一个问题与你的答案有关:在你的查询中,相同的比较会执行两次,一次是选择,另一次是在哪里。只有两种之一可以优化查询吗? – LuckyStarr 2013-03-20 09:20:24