我想在我的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');
答案 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执行的哪一方面编辑查询。哪个可能更快。
条件表达式也是一种选择。提到这个问题。