【问题标题】:SELECT, WHERE, GROUP BY选择,在哪里,分组
【发布时间】:2019-10-26 04:20:39
【问题描述】:

我正在尝试检索向我显示卡片是否已发给玩家的数据。

我尝试了使用这些网站资源构建代码的不同方法

http://www.sqlservertutorial.net/sql-server-basics/sql-server-group-by/ https://docs.microsoft.com/en-us/sql/t-sql/queries/where-transact-sql?view=sql-server-ver15

但我不断收到此错误消息

#1064 - 您的 SQL 语法有错误;检查与您的 MariaDB 服务器版本相对应的手册,以了解要使用的正确语法 '(E_Subtype WHERE E_Type = 'Card') GROUP BY E_From LIMIT 0, 25' 附近 在第 2 行

SELECT E_Type, E_Subtype FROM eventdataview
COUNT (E_Subtype WHERE E_Type = 'Card')
GROUP BY E_From;

我正在尝试从 E_type 和 E_Subtype 中获取数据,以显示已提供卡片。 如果给了一张卡片,它将查看 E_From 以查看哪个玩家收到了卡片。

应该是这样的

E_From     | E_Subtype
-----------|-----------
player 1   | Yellow Card
Player 2   | Red Card

【问题讨论】:

  • SELECT E_Type, E_Subtype, COUNT (E_Subtype) FROM eventdataview WHERE E_Type = 'Card' GROUP BY E_From
  • 您正在查看 SQL Server 教程,而您的错误消息来自 MariaDB。它们是两个不同的数据库,并不总是兼容。

标签: sql group-by mariadb where-clause


【解决方案1】:

您的查询应如下所示:

SELECT E_Type, COUNT(*)
FROM eventdataview
WHERE E_Type = 'Card'
GROUP BY E_From;

注意事项:

  • SQL 的子句以非常特定的顺序排列,SELECTFROMWHEREGROUP BY
  • 在聚合查询中,唯一未聚合的表达式应该只有 GROUP BY 键。
  • WHERE 是整个查询的子句,而不是 COUNT() 函数的子句。

【讨论】:

    【解决方案2】:

    语法错误在

    COUNT(E_Subtype WHERE E_Type = 'Card')

    括号位置错误,以及在表名后添加的列数。

    使用下面提到的@andrew 查询

    SELECT E_Type, E_Subtype, COUNT (E_Subtype) As No_Of_Subtypes 
    FROM eventdataview 
    WHERE E_Type = 'Card' 
    GROUP BY E_From
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-08-05
      • 1970-01-01
      • 2015-10-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-01-19
      • 2016-02-07
      相关资源
      最近更新 更多