sql - MySQL条件语句

标签 sql mysql conditional-statements

好的,所以我有一个看起来像这样的查询:

SELECT 
    `orders`.*,
    GROUP_CONCAT(
        CONCAT(
            `menu_items`.`name`, 
            ' ($',
            FORMAT(`menu_items`.`price`,2),
            ')'
        ) SEPARATOR '<br>'
    ) as `items`,
    SUM(`menu_items`.`price`) as `additional`,
    `children`.`first_name`,
    `children`.`last_name`,
    `organizations`.`base_price`
FROM 
    `orders`, `order_items`, `menu_items`, `children`, `organizations`
WHERE 
    `order_items`.`menu_item_id` = `menu_items`.`id` AND 
    `order_items`.`order_id` = `orders`.`id` AND
    `orders`.`added_by` = {$user_id} AND
    `orders`.`date` > '{$cutoff}' AND
    `children`.`id` = `orders`.`child_id` AND
    `organizations`.`id` = `children`.`organization_id`
GROUP BY 
    `orders`.`id`

我知道这是一个怪物,有些人会在不使用显式连接之前死去。然而,忽略这一点,如果 menu_items.price 大于 0,我只想在 GROUP_CONCAT 中使用 CONCAT,否则只返回 menu_items.name。然而,我没有成功地尝试将 IF 放入其中。我已经阅读了手册,但我尝试过的所有方法都不起作用,而且我很确定我在整个条件语句中遗漏了一些东西。

最佳答案

你试过用这样的东西吗?

CASE WHEN 'menu_items'.'price' = 0 THEN 'menu.items'.'name' ELSE CONCAT (etc) END 

当然是替换 CONCAT 语句。

关于sql - MySQL条件语句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/231838/

相关文章:

sql - 对 JSONB 数组字段中的所有项目求和

sql - 什么 SQL 在第一列中返回重复项,而第二列中的值不同?

php - 如何在连接表中搜索?

mysql - 如何限制 JOIN?

mysql - 基于行的 id 的 where 子句中的条件

sql - 如何只选择重复的记录?

php - Codeigniter 从数据库中获取所有重复记录并显示在 View 中

python - 基于条件的索引范围

r - 获取需要匹配 R 中其他列的条件的平均值

php - 在 HTML 表中显示 MySQL 查询