2009-09-09 26 views
0

可以说我在MySQL中有一个名为articles的表,它有一个名为article_id的列。我还有另一个表格,称为链接,其中有两列名为article_id和link。MySQL多表和多行

每一篇文章都可以附加多个链接,让我们说的article_id = 2有两个环节:

articles: 
article_id | text 
-----------+------ 
2   | blah 

links: 
article_id | url 
-----------+------ 
2   | test1 
2   | test2 

现在我想一个查询,可以以某种方式选择从文章的文字和链接网址,其中的article_id = 2在一个查询中可能吗?

回答

1

您需要将JOIN的表格放在一起使用article_id。 有几种不同类型的加入 - 如果文章总是有链接,您可以使用INNER JOIN - 如果不可以,则可以使用LEFT JOIN,在这种情况下,url将是NULL

SELECT a.text, l.url 
FROM articles AS a 
INNER JOIN links AS l ON a.article_id = l.article_id 
WHERE a.article_id = 2 

你应该注意到,这会返回一个排的每个网址,反复针对这些行的文章全文 - 在你的应用程序,你可以只取第一行文字。如果您的文字很大,并且每篇文章都有很多链接,那么执行两个查询可能会更有效率 - 您必须对其进行配置才能找到。