【问题标题】:cant't run the follorwing Query Clause query shows an error message in goormide无法运行以下查询子句查询在 goormide 中显示错误消息
【发布时间】:2022-01-19 16:25:02
【问题描述】:

运行具有相似语法的查询:

WITH table1 
AS 
(SELECT 
    COUNT(*)
FROM photos
),
table2 AS (
SELECT 
    COUNT(*)
FROM 
users
)

SELECT table1 / table2;

我收到以下错误,但不知道为什么?对 SQL 来说真的很新。谢谢!

您的 SQL 语法有错误;检查与您的 MySQL 服务器版本相对应的手册,以获取在“table1 AS”附近使用的正确语法

【问题讨论】:

  • 想一想,table1table2 是常见的 table 表达式,而不是列。您不会将 CTE 划分为另一个;它们不是标量值。在这里使用 2 个子查询会更好。
  • Fanciful...为计数分配别名并在主查询中引用它们
  • SELECT VERSION() 返回什么?您需要使用 8.0 版才能使用 WITH ... 语法。早期版本不支持 CTE。
  • @BillKarwin 我运行它,它显示 5.7.36-0ubuntu0.18.04.1,我猜它不支持这个?

标签: mysql sql


【解决方案1】:

您不能使用 CTE 语法,因为您使用的是 MySQL Server 5.7。 CTE 是 MySQL 8.0 中引入的新特性。

但您显示的查询不需要它。你可以这样做:

SELECT table1.count / table2.count
FROM (SELECT COUNT(*) AS count FROM photos) AS table1
CROSS JOIN (SELECT COUNT(*) AS count FROM users) AS table2;

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-12-16
    • 1970-01-01
    • 2023-03-11
    • 2020-04-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-10-05
    相关资源
    最近更新 更多