结果以逗号分隔的MySQL视图

结果以逗号分隔的MySQL视图,mysql,mysql-workbench,Mysql,Mysql Workbench,我正在MySQL工作台中创建一个视图: 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

我正在MySQL工作台中创建一个视图:

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`
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`
表格:

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`
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`

我想创建一个视图,以这样的方式返回记录:我从addressBook表中获取所有行&数据字段值,这些值由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`
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`

试着这样做:

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 `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`
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`

为什么需要视图?我正在创建MySQL视图,因为我不想在PHPSorry中运行多个查询。这句话的逻辑我想不通。谢谢大家的关注