sql - 如何通过使用引用同一个表的不同列值来获取数据

标签 sql postgresql

我有两个表:

create table 
books (
       id int
      ,bookname text
      );

create table 
users(
      id int
     ,name text
     ,book_1 int
     ,book_2 int
     ,book_3 int
     );

现在,'book_1'、'book_2'、'book_3' 包含表 'books' 的 ID。

我正在尝试使用 join 创建单个查询以获取所有三本书名和用户名。

我可以获得一本书的名字,但是我如何获得所有三本书的名字?

SELECT user.name
      ,books.name 
FROM user LEFT JOIN books ON books.id=user.book_1; 

(这是给我一本书的详细信息)

使用 PostgreSQL。

我想要一行中的结果。喜欢

username, book_1_name, book_2_name, book_3_name 

不想要多行。

最佳答案

您可以使用子选择在单行中获取每个用户名书名(如果id 在表 books 中是唯一的)

select name username
      ,(select bookname from books where id=book_1) book1_name
      ,(select bookname from books where id=book_2) book2_name
      ,(select bookname from books where id=book_3) book3_name
from users

> SQLFIDDLE DEMO

关于sql - 如何通过使用引用同一个表的不同列值来获取数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27997440/

相关文章:

sql - SQL中如何查找重复记录?

postgresql - 按精确匹配 THEN 前缀匹配排序全文搜索

ruby-on-rails - Sidekiq - 无法在 5.000 秒内获得数据库连接

Django 操作错误 : SSL SYSCALL error: EOF detected

sql - 计算周数

c# - 加速 LINQ to SQL 查询

mysql - 在 MySQL 的 group_concat 期间引用价格并从另一个中减去

MySQL 将 3 个查询合并为一个

sql - 有没有一种更优雅的方法来检测大型SQL表中的更改而不进行更改?

数据库 Postgres - 无法加载数据库