繁体   English   中英

MySQL视图以逗号分隔结果

[英]MySQL view with comma separated result

我在MySQL Workbench中创建一个视图:

表:

在此处输入图片说明

我想创建一个视图,将这样的方式在那里,我得到来自addressBookData表用逗号分隔的地址簿表及数据字段值的所有行返回记录。

怎么做?

我的看法是这样的:

CREATE VIEW `addressBook_view` AS
SELECT
    `addressBook`.*,
    (SELECT `addressBookData`.`data` FROM `addressBookData` WHERE `addressBook_id` = `id` AND `type` = 'mobile') AS `mobile`,
    (SELECT `addressBookData`.`data` FROM `addressBookData` WHERE `addressBook_id` = `id` AND `type` = 'phone') AS `phone`,
    (SELECT `addressBookData`.`data` FROM `addressBookData` WHERE `addressBook_id` = `id` AND `type` = 'fax') AS `fax`
FROM
    `addressBook`

尝试这样的事情:

SELECT ab.*, abd.type, GROUP_CONCAT(abd.data SEPARATOR ',')
FROM addressBook ab 
LEFT JOIN addressBookData abd ON ab.id = abd.addressBook_id
GROUP BY ab.id, abd.type

您可以自己根据此查询创建视图。

最终这样做:

CREATE VIEW `addressBook_view` AS
SELECT
    `addressBook`.*
    (SELECT GROUP_CONCAT(`data`) FROM `addressBookData` WHERE `addressBook_id` = `addressBook`.`id` AND `type` = 'mobile' GROUP BY `id`) AS `mobile`,
    (SELECT GROUP_CONCAT(`data`) FROM `addressBookData` WHERE `addressBook_id` = `addressBook`.`id` AND `type` = 'phone' GROUP BY `id`) AS `phone`,
    (SELECT GROUP_CONCAT(`data`) FROM `addressBookData` WHERE `addressBook_id` = `addressBook`.`id` AND `type` = 'fax' GROUP BY `id`) AS `fax`
FROM
    `addressBook`

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM