【发布时间】:2012-12-18 11:52:30
【问题描述】:
这里的想法是 GROUP_CONCAT 从连接到 option_stock 和 options 表的 stock 表中编译选项代码列表,按股票 id 分组。 一个示例行是这样的:
Name Options Transmission
'Holden Commodore' '111, 145, 166, 188' 'Auto'
这个视图按原样工作,但我不禁觉得有一个更优雅的解决方案?
CREATE VIEW stock_view AS
(select s.description AS Name,
group_concat(o.option_code order by o.option_code ASC separator ', ')
AS Options,
(case
WHEN group_concat(o.option_code) LIKE '%111%' then 'Auto'
WHEN group_concat(o.option_code) LIKE '%112%' then 'Manual'
else 'Other'
end) as Transmission
from stock s
join option_stock ost ON s.id = ost.stock_id
join options o ON o.id = ost.option_id
group by s.id)
我试图避免在 CASE 困境中使用这个丑陋的 GROUP_CONCAT,但是如果我在这样的 case 语句中使用字段 Options ,我会收到错误消息:
WHEN `Options` LIKE '%111%' then 'Auto'
我知道为什么会抛出错误 - 这是因为您不能以这种方式使用另一列的别名。但是有办法解决吗?
【问题讨论】:
标签: mysql view case group-concat