【问题标题】:How to Integrate these two Queries into one Query?如何将这两个查询集成到一个查询中?
【发布时间】:2019-07-19 10:59:46
【问题描述】:

谁能告诉我如何将这两个查询合并为一个查询?

我已经尝试过这段代码,但这里的问题是它没有更新 Adserver 表。

with first as (
    select *, c_date = Current_date() from FRIDAY.Adserver where C_date IS NULL
),

second as (
    select * from FRIDAY.Adserver JOIN FRIDAY.Matching_Table 
    ON Adserver.Placement_ExtID = Matching_Table.string_field_0

  ),
Tird As(
Select *, CONCAT(Cast(Date as String),"-",Second.string_field_0) AS New_IDS from Second 
) Select * from Tird

首先我需要用当前日期更新 Adserver 表:

问题 1: UPDATE FRIDAY.Adserver SET C_date() = CURRENT_Date() 其中 C_date IS NULL ;

然后我只会选择当前日期的数据:

问题 2:

首先作为( select * from FRIDAY.Adserver where C_date = Current_date() ), 第二个( select * from First JOIN FRIDAY.Matching_Table1 ON First.Placement_ExtID = Matching_Table1.string_field_1 或 First.Placement_ExtID = Matching_Table1.string_field_0 ), 讨厌的( Select *, CONCAT(Cast(Date as String),"-",Second.string_field_0) AS New_IDS from Second ) Select * from Tird


上面的Query 1和Query 2有没有办法结合起来?

【问题讨论】:

  • 由于 SQL 标签也在这里,一些 RDMS 像 PostgreSQL 支持 WITH ... AS (UPDATE ... ) SELECT .... 不确定 Google BigQuery 是否支持。
  • @Fawad - 您确定您使用的是 BigQuery 吗?请确认
  • @Raymond 和@Mikhail ...这些查询正在运行,我正在使用 BigQuery

标签: sql google-bigquery


【解决方案1】:

这是不可能的。

查询可以更改数据(INSERT、UPDATE、DELETE)或返回数据(SELECT)。做这两个“同时”的代码是必要的。但这取决于使用的数据库服务器。

例如,您可以创建一个函数,该函数首先执行 UPDATE 语句,然后从 SELECT 语句返回数据。但正如我所说,这是否以及如何实现取决于数据库系统。

【讨论】:

  • 嗨 Mika,这似乎是个好主意。您能否共享任何已定义且在查询中也被调用的函数。谢谢
  • 我不详细了解 BigQuery,但我不确定您是否可以创建函数。您必须能够在服务器端创建它们。
猜你喜欢
  • 1970-01-01
  • 2015-10-08
  • 2012-11-27
  • 1970-01-01
  • 2022-01-12
  • 1970-01-01
  • 2015-03-15
  • 1970-01-01
  • 2018-08-07
相关资源
最近更新 更多