【问题标题】:having Uncaught Error: near "(": syntax error when trying to run query有未捕获的错误:在“(”附近:尝试运行查询时出现语法错误
【发布时间】:2019-09-08 14:28:22
【问题描述】:

当我尝试运行此查询时,我收到了下面提到的错误。我假设错误在于我的第一行查询。这没有得到解决。谁能指出我哪里错了?

WITH processed_users 
 AS (SELECT LEFT(u.phone_country, 2) AS short_phone_country, 
            u.id 
     FROM   users u) 
    SELECT t.user_id, 
   t.merchant_country, 
   Sum(t.amount / fxr.rate / Power(10, cd.exponent)) AS amount 
   FROM   transactions t 
   JOIN fx_rates fx 
     ON ( fx.ccy = t.currency 
          AND fx.base_ccy = 'USD' ) x`
   JOIN currency_details cd 
     ON cd.currency = t.currency 
   JOIN processed_users pu 
     ON pu.id = t.user_id 
     WHERE  t.source = 'IA' 

我收到此错误。

Uncaught Error: near "(": syntax error

【问题讨论】:

  • 你有一个杂散的反引号。加上power()不是内置的sqlite函数;这是用户自定义的吗?
  • 是的,power() 是用户定义的。杂散的反引号到底在哪里?
  • 你的 SQLite 版本是多少? CTE 在 3.8.3 中引入

标签: sql sqlite subquery


【解决方案1】:

我在您的查询中找到了一个 bactric,您需要 SUBSTR,因为 sqllite 不提供 left

WITH processed_users 
 AS (SELECT SUBSTR(u.phone_country,-length(u.phone_country), 2) AS short_phone_country, 
            u.id 
     FROM   users u
    ) 
    SELECT t.user_id, 
   t.merchant_country, 
   Sum(t.amount / fxr.rate / Power(10, cd.exponent)) AS amount 
   FROM   transactions t 
   JOIN fx_rates fx 
     ON ( fx.ccy = t.currency 
          AND fx.base_ccy = 'USD' ) x
   JOIN currency_details cd 
     ON cd.currency = t.currency 
   JOIN processed_users pu 
     ON pu.id = t.user_id 
     WHERE  t.source = 'IA' 

我更喜欢亲身接受t.amount / fxr.rate / Power(10, cd.exponent) line

【讨论】:

  • 错误在于第一行。我在子查询中使用了 AS。查询在第一行给出错误。
  • @RaiAbdullah 回答编辑实际上你需要 SUBSTR
猜你喜欢
  • 1970-01-01
  • 2018-10-15
  • 2021-12-04
  • 2020-02-25
  • 1970-01-01
  • 2018-11-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多