我有2张桌子,article和image.
为了提取特定用户的所有文章,我需要:
查询所有文章
SELECT * FROM article WHERE userid=100;
然后循环浏览这些文章,并使用以下内容提取图像:
SELECT * FROM image WHERE articleid = currentArticleId;
如何只用一个查询就可以实现同样的目的?
Luk*_*uke 10
您可以使用连接或子查询.
将执行子查询(括号中包含的第二个查询),并且将返回返回的ID以标识要从中捕获的初始查询中的哪些行.因此,如果您想象子查询返回(1,2,3),初始查询将查找行WHERE articleid是IN该列表.
SELECT * FROM image WHERE articleid IN (SELECT id FROM article WHERE userid=100);
Run Code Online (Sandbox Code Playgroud)
加入:
在这里,您告诉MySQL,articleidin image与表中的id列相关article.然后你可以从任一表中拉出列.这是一个淡化的解释,所以我建议你阅读链接.有各种类型的JOIN,这将导致不同的结果,所以你应该了解LEFT,RIGHT,OUTER并INNER加入以确保结果集适合您的需求.在这种情况下,JOIN相当于一个INNER连接.
SELECT
image.col1,
image.col2,
image.colX,
article.col1,
article.col2,
article.colX
FROM image
JOIN article ON article.id = image.articleid;
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
13430 次 |
| 最近记录: |