mysql,从不同的表中选择(FULL OUTER JOIN等价)?

时间:2015-06-12 16:30:16

标签: mysql

我有一个基本的apache 2灯服务,运行mysql和php5。

我有两个表,一个名为articles,其中包含id列(主键,自动增量),title, posted, author_id, extract, body和另一个名为authors的表其中包含id列(主键,自动增量),name, img, bio

我想创建一个返回articles.title,articles.posted,articles.extract,art​​icles.body,authors.name的select语句。现在正常我会做FULL OUTER JOIN,但它不会起作用,经过谷歌搜索后我发现你不能在mysql中这样做,谷歌建议使用UNION或合并LEFT JOINRIGHT JOIN

我试过了,但不知怎的,我无法让它发挥作用。我不能建立联盟,因为我的表有不同数量的列(同一作者有很多文章)。

我也试过这个:

SELECT articles.title authors.name FROM articles
LEFT JOIN authors ON articles.author_id = authors.id
UNION
SELECT articles.title authors.name FROM articles
RIGHT JOIN authors ON articles.author_id = authors.id;

但我收到错误:ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '.name FROM articles

任何有关如何使这项工作的见解都会很棒。

我还希望按articles.postedDESC对结果进行排序,但是一旦我得到正确的陈述,我就可以自己解决这个问题。

1 个答案:

答案 0 :(得分:2)

你忘了一些,

SELECT articles.title, authors.name FROM articles
                     ^---here
LEFT JOIN authors ON articles.author_id = authors.id
UNION
SELECT articles.title, authors.name FROM articles
                     ^---here
RIGHT JOIN authors ON articles.author_id = authors.id;

您的版本正在尝试SELECT articles.title AS authors.name,而别名不能包含.