在mysql请求中的条件if else

时间:2015-11-26 23:01:34

标签: php mysql

我想在我的sql请求中插入if / else条件。我该怎么做呢?我在下面尝试了这个,但它不起作用:

     $QpageManagerGeneralCondition = $OSCOM_PDO->prepare('
         select pmd.pages_html_text,
         pm.page_general_condition
         from :table_pages_manager pm,
         :table_pages_manager_description pmd
          where
         if (pm.customers_group_id = :customers_group_id) else (pm.customers_group_id = 99)

         and pm.page_general_condition = 1
         and pmd.language_id = :language_id
         and pmd.pages_id = pm.pages_id
         limit 1
          ');
     $QpageManagerGeneralCondition->bindInt(':language_id',(int)$_SESSION['languages_id'] );
     $QpageManagerGeneralCondition->bindInt(':customers_group_id',$OSCOM_Customer->getCustomersGroupID() );

     $QpageManagerGeneralCondition->execute();
     $QpageManagerGeneralCondition->value('pages_html_text');

2 个答案:

答案 0 :(得分:0)

我认为您正在寻找CASE声明。例如,您可以使用case语句为列'is_a_senior'设置不同的值。在此示例中,如果年份='SR',则列'is_a_senior'的值为yes。

SELECT player_name,
   year,
   CASE WHEN year = 'SR' THEN 'yes'
        ELSE 'no' END AS is_a_senior
FROM benn.college_football_players

请参阅https://sqlschool.modeanalytics.com/intermediate/case/

-

对于您的具体示例,看起来您可能实际上并不需要条件,但为查询添加默认值可能就足够了。

ISNULL(pm.customers_group_id, 99)  AS pm.customers_group_id

如果您需要的不仅仅是ISNULL检查,请查看COALESCE关键字。 COALESCE是一个非常强大的命令,如果null检查找到null,则允许您有条件地在查询中添加子查询。

答案 1 :(得分:0)

我看到你正在使用PHP / PDO来查询你的数据库,你可以在php中使用条件表达式(而不是在SQL中)并根据if执行的哪一方面编辑查询。哪个可能更快。

条件表达式也是一种选择。提到这个问题。

Can you have if-then-else logic in SQL?