我有一个基本的apache 2灯服务,运行mysql和php5。
我有两个表,一个名为articles
,其中包含id
列(主键,自动增量),title, posted, author_id, extract, body
和另一个名为authors
的表其中包含id
列(主键,自动增量),name, img, bio
。
我想创建一个返回articles.title,articles.posted,articles.extract,articles.body,authors.name的select语句。现在正常我会做FULL OUTER JOIN
,但它不会起作用,经过谷歌搜索后我发现你不能在mysql中这样做,谷歌建议使用UNION
或合并LEFT JOIN
和RIGHT 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.posted
,DESC
对结果进行排序,但是一旦我得到正确的陈述,我就可以自己解决这个问题。
答案 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
,而别名不能包含.