Mysql 这个简单的左连接操作不起作用,但是为什么呢?

Mysql 这个简单的左连接操作不起作用,但是为什么呢?,mysql,sql,left-join,Mysql,Sql,Left Join,我对这个简单的mysql查询有点困惑: SELECT `user`.`id`, `user`.`name` FROM `#__users` `user` LEFT JOIN (SELECT `_s`.`userId`, SUM(`_s`.`fild12`) AS `fild12`, SUM(`_s`.`fild13`) AS `fild13` FROM `#__logbookE

我对这个简单的mysql查询有点困惑:

SELECT 
    `user`.`id`,
    `user`.`name`
 FROM 
    `#__users` `user`
 LEFT JOIN 
    (SELECT 
        `_s`.`userId`,
        SUM(`_s`.`fild12`) AS `fild12`,
        SUM(`_s`.`fild13`) AS `fild13`
     FROM 
        `#__logbookEventdata` `_s`
     GROUP BY `_s`.`userId`) `stats`
 ON 
    (`stats`.`userId`=`user`.`id`)
它返回以下输出:

id  | name
----+-------------
291 | bla
289 | Super User
290 | user1
 userId | fild12 | fild13   
--------+--------+--------
289     |15      |0
290     |0       |0
实际上,我希望stats中的列会被添加到输出中。但事实并非如此。当我简单地调用stats SELECT查询时,我得到以下输出:

id  | name
----+-------------
291 | bla
289 | Super User
290 | user1
 userId | fild12 | fild13   
--------+--------+--------
289     |15      |0
290     |0       |0
我不明白为什么这样不行。我希望你们能帮助我。
谢谢

您必须将stats中的字段添加到主选择:


你有两套。第一个是用户,第二个是统计数据。你可以从第一秒到第二秒。从第一行到第二行。如果更改设置顺序,则不会保留相同的结果,因为“从表开始”之后的基准行不等于“左联接子选择”之后的联接行。结果按表/子查询保留所有行。
我建议你把这两个集合调换一下

将出现在输出中的字段是在查询的SELECT部分中定义的。实际上,您没有将统计表中的任何内容添加到SELECT…您没有选择他们的SELECT user.id,user.name'这些是您正在选择的字段,如果您想要子查询字段,您需要在主选择子句中也选择它们。非常感谢!它包括: