gpt4 book ai didi

sql - 根据另一个表中的选定行从一个表中选择数据

转载 作者:搜寻专家 更新时间:2023-10-30 22:24:38 25 4
gpt4 key购买 nike

我有三个表:

书籍:

{id, title, status}
{1, SuperHero, false}
{2, Hobbit, true}
{3, Marvel, true}

标签:

{id, name}
{1, Drama}
{2, Comedy}
{3, Triller}

books_tags:

{book_id, tag_id}
{1, 1}
{1, 2}
{2, 2}

每本书都可以有或没有很多独特的标签。

1)根据 book_id 在一次查询中获取一本书的所有标签和数据(tag.id,名称)的正确方法是什么?

2)在一次查询中,通过状态 (true) 为每一本书行获取带有标签数组的所有书籍的正确方法是什么?

我为第一个想出了这个,但第二个却很挣扎:

SELECT tag_id, name 
FROM books_tags
INNER JOIN tags ON tag_id = tags.id
WHERE book_id = 1

最佳答案

对于第二个要求,使用以下内容:

SELECT
b.title,
array_agg(t.name) AS tags
FROM books AS b
INNER JOIN books_tags AS bt ON (b.id = bt.book_id)
INNER JOIN tags AS t ON (bt.tag_id = t.id)
WHERE b.status = true
GROUP BY 1;

关于sql - 根据另一个表中的选定行从一个表中选择数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55078560/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com