好的,所以我有一个看起来像这样的查询:
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/