首页 > 解决方案 > 如果列名不同,WHERE IN 语句为什么或如何工作?

问题描述

所以我想创建一个显示usertype = 'Subscriber'. 因此,我构建了一个内部查询来从表中提取usertype和匹配,并与表中的和匹配。2张不同的桌子。我想知道如果两个列名都不同,该语句为什么或如何工作??start_station_idcitibike_tripsnamestation_idcitibike_stationsWHERE INstart_station_id != station_id

这是我理解的概念,因为两个列名都是相同的。

如果我只运行子查询,这就是结果。

如果我运行整个事情,这就是结果。

标签: sqlgoogle-bigquery

解决方案


整个查询的逻辑是从等于“订阅者”的表中获取值start_station_id,然后使用提取的值在表中进行citibike_trips查询。因此,当您运行整个查询时,从子查询中提取的任何不存在于表列中的内容都不会包含在输出中。usertypecitibike_stationsstart_station_idcitibike_stationsstation_id

如果您只想选择带有条件的行,start_station_id != station_id则必须使用NOT IN语法。

SELECT
    station_id, name
  FROM `bigquery-public-data.new-york_citibike.citibike_stations`
  WHERE station_id NOT IN 
    (SELECT start_station_id
        FROM `bigquery-public-data.new-york_citibike.citibike_trips`
        WHERE usertype = 'Subscriber');

推荐阅读