Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sql-server-2005/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
SQL查询在联接时给出错误_Sql_Sql Server 2005 - Fatal编程技术网

SQL查询在联接时给出错误

SQL查询在联接时给出错误,sql,sql-server-2005,Sql,Sql Server 2005,我想运行以下SQL查询: SELECT COUNT (a.status_flag) counts, a.mkey, a.to_user FROM inward_doc_tracking_hdr a LEFT JOIN user_mst b ON a.to_user = b.mkey WHERE a.to_user = 1260 AND a.status_flag = 4. 但它没有运行,出现以下错误: 列“inquired\u doc\u tracking\u hdr.Mkey

我想运行以下SQL查询:

SELECT 
    COUNT (a.status_flag) counts, a.mkey, a.to_user
FROM  inward_doc_tracking_hdr a
  LEFT JOIN user_mst b ON a.to_user = b.mkey
WHERE a.to_user = 1260 AND a.status_flag = 4.
但它没有运行,出现以下错误:

列“inquired\u doc\u tracking\u hdr.Mkey”在选择列表中无效,因为它不包含在聚合函数或GROUP BY子句中

这里怎么了

我正在使用SQL-server-2005

更新

当我运行simple时,我遇到了一个问题

select count(status_flag) from inward_doc_tracking_hdr where to_user = 1279 
我数到2

但是当我跑的时候

SELECT COUNT (a.status_flag) counts, a.mkey, a.to_user, b.email, b.first_name + ' ' + b.last_name name FROM inward_doc_tracking_hdr a LEFT JOIN user_mst b ON a.to_user = b.mkey WHERE a.to_user = '1279' AND a.status_flag = '4' Group by a.mkey, a.to_user, b.email, b.first_name,b.last_name 
它显示了两行


为什么?

每当您选择
时,列表中有
聚合
非聚合
列的组合,您需要添加
分组依据
非聚合

SELECT COUNT (a.status_flag) counts, a.mkey, a.to_user
FROM inward_doc_tracking_hdr a
  LEFT JOIN user_mst b ON a.to_user = b.mkey
WHERE a.to_user = 1260 AND a.status_flag = 4
Group by a.mkey, a.to_user

您需要在count()中不包括的列上使用group by


通常,当使用带有聚合的
左联接时,您希望计算第二个表中的匹配数,而不是第一个表中的匹配数。因此:


即使在
b

中没有匹配的行,您的查询版本(修复后)也会返回“1”计数。您需要一个GROUPBY子句。请尝试在您的语句结尾添加
groupby a.mkey,a.to_user
。@jarlh:
groupby
整个查询或部分查询的位置?@jarlh:谢谢,它起到了作用。。我没注意到:在我更新的问题上扑通一声。我想数一数,但不是我想的那样want@NK-这应该是一个新问题
SELECT COUNT (a.status_flag) counts, a.mkey, a.to_user
FROM inward_doc_tracking_hdr a
  LEFT JOIN user_mst b ON a.to_user = b.mkey
WHERE a.to_user = 1260 AND a.status_flag = 4.
group by a.mkey, a.to_user
SELECT COUNT(b.mkey) as counts, a.mkey, a.to_user
FROM inward_doc_tracking_hdr a LEFT JOIN 
     user_mst b
     ON a.to_user = b.mkey
WHERE a.to_user = 1260 AND a.status_flag = 4
GROUP BY a.mkey, a.to_user;