gpt4 book ai didi

mySQL 查询选择/加入未按预期工作

转载 作者:行者123 更新时间:2023-11-29 01:51:01 25 4
gpt4 key购买 nike

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

期望:

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 子句。
  • 您正在按 modellocation 进行聚合,但每个 model 只需要一行。
  • JOIN 条件既出现在 ON 子句中,也出现在 WHERE 子句中。

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

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com