如何对连接表执行查询?

时间:2016-01-13 18:12:17

标签: mysql sql join alias

我的数据库中有一个名为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,所以请和我一起去。 任何帮助将不胜感激!

3 个答案:

答案 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)

你需要一个as子句。

在这里查看这篇文章:

every derived table must have its own alias

它涵盖了相同的基础。

答案 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子句

中有更多的过滤器