SELECT * FROM之间的区别

问题描述 投票:-2回答:1

请问这两个SQL查询有什么区别?

SELECT 
    articles.idarticles, articles.titre, articles.contenu,
    categories.titre AS categorie 
FROM 
    articles, categories 
WHERE 
    idarticles = 2 ;

还有这个

SELECT 
    articles.idarticles, articles.titre, articles.contenu,
    categories.titre AS categorie 
FROM 
    articles 
LEFT JOIN 
    categories ON category_id = categories.idCategories 
WHERE 
    idarticles = 2 ;

结果是:对于第一个:

query one

第二个查询的结果是:

query two

为什么第一个返回一个结果,第二个返回2行?

sql join left-join where-clause
1个回答
0
投票

下面的查询返回单个数据,因为您提供了一个特定的id,它满足获取单行的条件

SELECT articles.idarticles, articles.titre, articles.contenu,categories.titre AS categorie FROM articles, categories WHERE idarticles=2 ;

但在第二次查询

SELECT articles.idarticles, articles.titre, articles.contenu,categories.titre AS categorie FROM articles LEFT JOIN categories ON category_id=categories.idCategories WHERE idarticles=2 ;

你已经完成了左边连接的文章和类别,其中有2条记录,其中idarticles = 2在类别表中,它们与文章数据的记录相匹配。因为左连接会拉出第一个表的所有记录并匹配第二个表的记录。你得到两条记录。

供参考,您可以按照以下链接。

left join

© www.soinside.com 2019 - 2024. All rights reserved.