Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/70.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 Don';I don’我不知道在子查询中把where放在哪里_Sql_Sql Server - Fatal编程技术网

Sql Don';I don’我不知道在子查询中把where放在哪里

Sql Don';I don’我不知道在子查询中把where放在哪里,sql,sql-server,Sql,Sql Server,我想创建一个视图,查找角色库存中数量最多的前5个项目,同时创建一个列,显示有多少其他人也拥有该项目 人物 查里德PK 存货 项目ID 查里德 数量 项目 项目ID 这就是我到目前为止得到的 CREATE VIEW vwPopItems --Top 5 most popular items AS SELECT TOP 5 INVENTORY.itemID, CHARACTERS.charName,quantity, (SELECT COUNT(*) FROM INVE

我想创建一个
视图
,查找角色库存中数量最多的前5个项目,同时创建一个列,显示有多少其他人也拥有该项目

  • 人物

    • 查里德PK
  • 存货

    • 项目ID
    • 查里德
    • 数量
  • 项目
    • 项目ID
这就是我到目前为止得到的

CREATE VIEW vwPopItems --Top 5 most popular items
AS
SELECT TOP 5 INVENTORY.itemID, CHARACTERS.charName,quantity,
       (SELECT COUNT(*) FROM INVENTORY where INVENTORY.itemID =) as cnt
FROM INVENTORY
JOIN CHARACTERS
ON CHARACTERS.charID = INVENTORY.charID
WHERE INVENTORY.charID = 6
GO
相反,它显示
count
作为该表中没有
WHERE
的所有记录,因此我需要制作一个
WHERE
,其中它只显示前5名中的特定项,以及包含该项的字符数。知道上面的错误,但你们能告诉我怎么做来修复它吗?:)

只需使用
COUNT(*)
而不是子查询。然后使用
TOP
并按
排序以获得
TOP`5

SELECT TOP(5)
    i.itemID,
    c.charName,
    i.quantity,
    COUNT(*) AS cnt
FROM INVENTORY i
INNER JOIN CHARACTERS c
    ON c.charID = i.charID
WHERE
    i.charID = 6
GROUP BY 
    i.itemID,
    c.charName,
    i.quantity,
ORDER BY cnt DESC

@亚历山德罗·奥纳诺,对拒绝我的编辑有何评论?
SELECT EMPLOYEE_ID, salary, department_id
FROM   employees E
WHERE salary > (SELECT AVG(salary)
                FROM   EMP T
                WHERE E.department_id = T.department_id)