sql返回多条相同记录

xxhby3vn  于 2021-06-21  发布在  Mysql
关注(0)|答案(2)|浏览(384)

我正在尝试运行以下sql查询:

"SELECT Main.id, Main.created_min, Main.local_photo_name, Main.description, Main.creator, Main.title, Main.museum, technique.technique 
            FROM Main 
            INNER JOIN technique ON technique.kleding_id=Main.id 
            LIMIT 5"

我希望这个查询将技术表中的数据添加到我从主表得到的结果中。这是可行的,但是当我有多个技术与主表中的同一id相关联时,我希望这些技术被添加到主记录的数组中。
这在sql中是可能的吗?
到目前为止,我们的目标是:

[16] => Array
    (
        [id] => 47
        [created_min] => 1890
        [local_photo_name] => 
        [description] => Volgens kerkelijk gebruik werden baby's gedoopt in witte gewaden, als teken van onschuld en zuiverheid. Deze doopkleding kon men doorgaans meerdere malen gebruiken en overdragen op volgende generaties. In de 19de eeuw was het doopfeest een belangrijke gebeurtenis. Vele doopgewaden zijn dan ook gemaakt van kostbare materialen en rijkelijk gedecoreerd.
        [creator] => Anoniem
        [title] => Ecrukleurige doopmantel met cape in satijn en kant.
        [museum] => Modemuseum Hasselt
        [technique] => kant
    )

[17] => Array
    (
        [id] => 47
        [created_min] => 1890
        [local_photo_name] => 
        [description] => Volgens kerkelijk gebruik werden baby's gedoopt in witte gewaden, als teken van onschuld en zuiverheid. Deze doopkleding kon men doorgaans meerdere malen gebruiken en overdragen op volgende generaties. In de 19de eeuw was het doopfeest een belangrijke gebeurtenis. Vele doopgewaden zijn dan ook gemaakt van kostbare materialen en rijkelijk gedecoreerd.
        [creator] => Anoniem
        [title] => Ecrukleurige doopmantel met cape in satijn en kant.
        [museum] => Modemuseum Hasselt
        [technique] => satijn
    )

我想要一些东西:

[16] => Array
    (
        [id] => 47
        [created_min] => 1890
        [local_photo_name] => 
        [description] => Volgens kerkelijk gebruik werden baby's gedoopt in witte gewaden, als teken van onschuld en zuiverheid. Deze doopkleding kon men doorgaans meerdere malen gebruiken en overdragen op volgende generaties. In de 19de eeuw was het doopfeest een belangrijke gebeurtenis. Vele doopgewaden zijn dan ook gemaakt van kostbare materialen en rijkelijk gedecoreerd.
        [creator] => Anoniem
        [title] => Ecrukleurige doopmantel met cape in satijn en kant.
        [museum] => Modemuseum Hasselt
        [technique] => Array
            (
            [technique] => kant
            [technique] => satijn
            )
    )

表格如下所示:
请注意,每个表包含大约20万条记录。所以速度是关键。

ukqbszuj

ukqbszuj1#

使用id为的group by,然后尝试是否可行

j1dl9f46

j1dl9f462#

你可以这样做:

SELECT Main.id,
       Main.created_min,
       Main.local_photo_name,
       Main.description,
       Main.creator,
       Main.title,
       Main.museum,
       JSON_ARRAYAGG(technique.technique) AS techniques
FROM Main
INNER JOIN technique ON technique.kleding_id = Main.id
GROUP BY Main.id
LIMIT 5

这将返回一个json技术数组 JSON_ARRAYAGG

相关问题