我的数据库中有一个名为book_collection的表, 它有列:publisherID,title,familyID,bookID 另一个名为book_authors的表有列:bookID和authorID。
我想一起加入这些表,然后找到所有的#34;书" 具有相同的publisherID和标题。
所以我最初开始时:
SELECT book_collection.publisherId, book_collection.title,
book_authors.authorId FROM book_collection INNER JOIN book_authors ON book_collection.bookId = book_authors.bookId
这会加入表格,但我现在遇到的问题
是如何对此表执行任何其他查询。
如果我复制此代码并在每SELECT * FROM ...
后粘贴它,它会给出
我说错误"每个派生表需要一个别名"?
我不是最好的SQL,所以请和我一起去。 任何帮助将不胜感激!
答案 0 :(得分:1)
每个派生表都需要别名
此错误表示您需要在 SELECT STATEMENT 的列中使用表别名。
如何使用别名:
如果您不想使用自定义别名,可以使用表名作为别名。
示例:
SELECT collection.* ,authors.* ,book_authors.* FROM ....
其他解决方案:
您还可以使用自定义定义别名,例如:
SELECT c.* ,a.* , b.* FROM collection c INNER JOIN authors a ON a.columnid = c.columnid ....
此错误的基本原因:
出现此错误的原因是,您在不同的表中具有相同的列名称, MYSQL 不知道哪个列是哪个表的引用。在这些查询中使用别名总是有用的。
旁注:
我建议您使用易于多次写入的自定义别名。基本上创建了别名以使列名更具可读性。
了解更多基本信息SQL ALIASES
答案 1 :(得分:0)
答案 2 :(得分:0)
SELECT collection.* ,authors.*
,book_authors.authorId
FROM book_collection as collection
INNER JOIN book_authors as authors
ON book_collection.bookId = book_authors.bookId
使用此查询,您可以从两个表中获取所有列。如果你想获得更好的性能,你可以在内连接或where子句
中有更多的过滤器