mySQL 查询选择/连接未按预期工作

标签 mysql

首先,我已经做了很多搜索,看看这个问题是否可以解决,但尚未找到相关的答案,所以我现在就问。我有一个查询(主要是)从两个单独的表中提取数据,以显示四个位置中每个位置的电脑型号总数(这些位置位于一列中,因此我尝试通过以下方式选择它们作为自己的列别名)。该查询提取了所有必需的信息,但并不像我希望的那样。

期望:

model | loc1 | loc2 | loc3 | loc4
5530  | 3    | 2    | 1    | 0
6440  | 10   | 0    | 3    | 20

现实:

model | loc1 | loc2 | loc3 | loc4
5530  | 3    | null | null | null
5530  | null | 2    | null | null
5530  | null | null | 1    | null

等等..

这是我的查询,如果可能的话,任何帮助使现实符合预期的帮助将不胜感激。

SELECT 
      a.model,
      (select COUNT(a.model)
             WHERE a.location = 'AoC-Reno') AS Reno,
      (select count(a.model)
             where a.location = 'AoC-Fargo') AS Fargo,
      (select count(a.model)
              where a.location = 'EoC') AS EoC,
      (select count(a.model)
              where a.location = 'APoC') as APoC
FROM assets AS a
join models m on m.model = a.model  
WHERE m.type IN ('Desktop','Laptop')
AND a.model = m.model
AND a.status != 'Recycled'
GROUP BY m.model, a.location
ORDER BY m.model

最佳答案

使用条件聚合:

SELECT a.model,
       SUM(a.location = 'AoC-Reno') AS Reno,
       SUM(a.location = 'AoC-Fargo') AS Fargo,
       SUM(a.location = 'EoC') AS EoC,
       SUM(a.location = 'APoC') as APoC
FROM models m JOIN
     assets a
     on m.model = a.model  
WHERE m.type IN ('Desktop', 'Laptop') and a.status <> 'Recycled'
GROUP BY m.model
ORDER BY m.model;

您的查询有多个问题:

  • 您正在使用“子查询”,但没有 FROM 子句。
  • 您正在按模型位置进行聚合,但您只需要每个模型一行。
  • JOIN 条件既位于 ON 子句中,又在 WHERE 子句中重复。

关于mySQL 查询选择/连接未按预期工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43151208/

相关文章:

MySQL:哪里...在()

mysql - GTFS数据-停止数据

mysql - 为什么 Yii2 ActiveRecord joinWith 进行 2 个选择

mysql - nodejs 数据库迁移耗尽堆空间

mysql - mysqldump : "--defaults-extra-file" option is not working as expected 的问题

连接到 Mysql 数据库时找不到 python:mysql_config

mysql - 我无法删除 mysql 中以 pound '#' 结尾的数据库

mysql - 我可以在 [0; 中获得 MySQL FULLTEXT 行列吗? 1]范围?

mysql - 为什么我的 SQL 查询返回多行?

php - Laravel 5.4 SQLSTATE[23000] : Integrity constraint violation: 1062 Duplicate entry '0' Live website