sql - 如何使用标准 SQL BIG Query 语法在不重复的情况下重写它?
问题描述
将时间条目表中的两个表合并到用户表中。目前使用大查询标准 SQL。列 id 应该为每个条目有 1 个唯一 id,但它会提取多个相同的 id 如何将 LEFT Join 与 UNION ALL 或 UNION DISTINCT 一起使用?
--*** Gives Duplications for some reason ***
SELECT outer_e.hours, outer_e.id, outer_e.updated_at, outer_e.spent_date, u.first_name, u.is_active, u.id AS user_id, u.weekly_capacity FROM
(SELECT e.id, MAX(e.updated_at) AS updated_at FROM `harvest-experiment.harvest.time_entries` AS e
GROUP BY e.id LIMIT 1000) AS inner_e
LEFT JOIN `harvest-experiment.harvest.time_entries` AS outer_e
ON inner_e.id = outer_e.id AND inner_e.updated_at = outer_e.updated_at
LEFT JOIN `harvest-experiment.harvest.users` AS u
ON outer_e.user_id = u.id
解决方案
我的 SELECT 关键字旁边缺少DISTANT
关键字,这样做似乎可以解决视图中的重复问题。
__***** Current Solution *****———
--*** Returns a Left Joined Table of `time entries` and `users` ***
SELECT DISTINCT outer_e.hours, outer_e.id, outer_e.updated_at, outer_e.spent_date, outer_e.created_at, outer_e.client_id, u.is_admin, u.first_name, u.is_active, u.id AS user_id, u.weekly_capacity, client.name FROM
(SELECT e.id, MAX(e.updated_at) AS updated_at FROM `harvest-experiment.harvest.time_entries` AS e
GROUP BY e.id LIMIT 1000) AS inner_e
LEFT JOIN `harvest-experiment.harvest.time_entries` AS outer_e
ON inner_e.id = outer_e.id AND inner_e.updated_at = outer_e.updated_at
LEFT JOIN `harvest-experiment.harvest.users` AS u
ON outer_e.user_id = u.id
推荐阅读
- python-3.x - 为 ThreadPoolExecutor 释放资源
- git - 使用 git 将文本文件追溯设置为二进制文件
- html - 我们如何向电子邮件模板添加自定义字体?
- html - 悬停时如何更改图像的一部分?
- php - 计算一个表中的家庭成员数,用于另一张名为 house 的表中的每一行?
- visual-foxpro - 使用 VFP 创建 ADS AEP
- typescript - 如何找到无法描述的 TypeScript 编译器错误的原因?
- r - R test if value is lowest from group, add 'yes'/'no' in new column if value is lowest from group
- python - 使用 Plotly 和 Numpy 从坐标绘制一个框
- php - MySQL 数据库未在 PHP 中接收任何数据