我正在尝试执行MySQL JOIN查询以从两个表中获取内容。
这就是表A的样子:
表A
T(n) ∈ Θ(log n/ log log n)
和表B
ID | ISBN | Type
----------------------
12 | 0338566 | book
15 | 6656565 | post
16 | 9435644 | book
20 | 8525446 | book
我正在尝试构建我的SQL语句以输出所有书籍数据,例如:
ID | tableA_id | Key | Value
---------------------------------------------
1 | 12 | Author | John Doe
2 | 12 | Title | Book Title 1
3 | 16 | Title | Book Title 2
4 | 20 | Author | John Doe
5 | 20 | Title | Book Title 3
查找SQL JOIN语句后,我就想到了这一点:
ISBN | Author | Title
-------------------------------------
0338566 | John Doe | Book Title 1
9435644 | | Book Title 2
8525446 | John Doe | Book Title 3
查询只返回2列,因为我只引用tableB.value一次,即使我需要同时获取其中的两个值(标题和作者)。
我如何正确构建此查询?
答案 0 :(得分:2)
也许不是解决此问题的最佳方法,但我会使用别名连接tableB两次并根据需要选择值,如下所示:
SELECT tableA.ISBN, author.value as Author, title.Value as Title
FROM tableA
left join tableB author
on tableA.ID = author.tableA_id
and author.key = "Author"
left join tableB title
on tableA.ID = title.tableA_id
and title.key = "Title"
where tableA.type = “book”
PS:这个数据模型看起来很糟糕,我宁愿更新它并将标题和作者存储在两个不同的表中