Mysql 这个简单的左连接操作不起作用,但是为什么呢?
我对这个简单的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
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'这些是您正在选择的字段,如果您想要子查询字段,您需要在主选择子句中也选择它们。非常感谢!它包括: