我已经得到了报告认为,这看起来是这样的:
SELECT
a.id,
a.value1,
a.value2,
b.value1,
/* (+50 more such columns)*/
FROM a
JOIN b ON (b.id = a.b_id)
JOIN c ON (c.id = b.c_id)
LEFT JOIN d ON (d.id = b.d_id)
LEFT JOIN e ON (e.id = d.e_id)
/* (+10 more inner/left joins) */
它加入了不少表,并返回大量列,但指标已经到位,性能优良。
现在我想另一列添加到结果,显示
- 逗号分隔值
- 按值排序
- 从数据表Y
- 外通过交点表X接合
- 如果
a.value3 IS NULL
,否则采取a.value3
用英文逗号分隔我用的是分组值汤姆凯特的stragg ,可以使用COLLECT
更高版本。
对于SELECT伪代码是这样说:
SELECT xx.id, COALESCE( a.value3, stragg( xx.val ) ) value3
FROM (
SELECT x.id, y.val
FROM x
WHERE x.a_id = a.id
JOIN y ON ( y.id = x.y_id )
ORDER BY y.val ASC
) xx
GROUP BY xx.id
什么是做到这一点的最好方法是什么? 有小费吗?