我正在knex中编写一个迁移文件,以便向MySQL 5.7数据库添加一个视图。
此迁移为使用GROUP_CONCAT
的查询创建视图。
我使用下面的代码来创建这个视图,它非常接近于工作,但是GROUP_CONCAT重复地连接值“pf.family“,而不是pf.family的实际列值。
/**
* @param { import("knex").Knex } knex
* @returns { Promise<void> }
*/
exports.up = function (knex) {
return knex.schema.createViewOrReplace(
"product_families_view",
function (view) {
view.columns(["product_id", "part_number", "families"]);
view.as(
knex("product_families AS pf")
.select([
"pfp.product_id",
"pfp.part_number",
knex.raw("GROUP_CONCAT(? ORDER BY ? SEPARATOR ?) as ?", [
"pf.family",
"pf.family",
" ",
"families",
]),
])
.innerJoin(
"product_families_products AS pfp",
"pfp.family_id",
"pf.id"
)
.groupBy("pfp.product_id")
);
}
);
};
这将生成以下视图:
我不确定为什么要重复“pf.family“,而不是我试图连接的实际pf.family列值。
1条答案
按热度按时间7jmck4yq1#
哎呀。看起来使用绑定导致了这个问题。
这解决了问题