无法执行不可比较类型 STRING 和 INT64 的 IN 子查询

问题描述 投票:0回答:2

我不明白这个查询的问题是什么。

它说

无法在 [7:3] 处执行不可比较类型 STRING 和 INT64 的 IN 子查询

尝试了这个查询,但它不起作用。

SELECT
  station_id,
  name
FROM 
  bigquery-public-data.new_york_citibike.citibike_stations
WHERE
  station_id IN

  (
    SELECT
      start_station_id
    FROM
      bigquery-public-data.new_york_citibike.citibike_trips
    WHERE
      usertype = 'Subscriber'
  )
sql google-bigquery sequel
2个回答
0
投票

我假设 station_id 和 start_station_id 的数据类型不相似。在这种情况下,我们可以对其中一列进行强制转换,使两者具有相同的类型。

如果station_id为字符串且start_station_id为整数类型。我会编写如下查询。希望这有帮助

选择 站号, 姓名 从 bigquery-public-data.new_york_citibike.citibike_stations 在哪里 station_id IN

( 选择 强制转换(start_station_id 作为字符串) 从 bigquery-public-data.new_york_citibike.citibike_trips 在哪里 用户类型 = '订阅者' )


0
投票

我可以确认 CAST 作为 station_id 的字符串是有效的。

SELECT
  station_id,
  name
FROM
bigquery-public-data.new_york.citibike_stations
WHERE
  station_id IN
   (
    SELECT
      CAST (start_station_id AS STRING)
    FROM
    bigquery-public-data.new_york.citibike_trips
    WHERE
      usertype =
    'Subscriber'
    )
© www.soinside.com 2019 - 2024. All rights reserved.