sql - 简单的 SQL 子查询
问题描述
当谈到 SQL 时,我似乎是个彻头彻尾的白痴....
我需要的只是从另一个表中获取一个值,但是第二个表上有多个具有相同 customerId 的行.. 我需要得到一个时间戳最高的行
CREATE OR REPLACE VIEW CUS_SETTINGS as
SELECT
c.id as id,
c.LANG as Language,
c.ALLOWEMAIL as AllowEmail,
l.CONFIRMED as confirmed
FROM cus.CUSTOMER c
????? something with l
/
LEFT JOIN 将带来每一行,所以我有多个重复的 id 我需要的是适当的子查询,但我无法让它工作......
(SELECT CONFIRMED FROM settings WHERE ?? c.id == l.id ?? AND MAX(TIMESTAMP) )
我已经尝试了许多连接和子查询的变体.. 但出于某种原因.. SQL 太令人困惑了....
解决方案
您可以使用分析函数。MAX() OVER(PARTITION BY)
子句可以为您提供最大时间戳 id。
SELECT SECONDD.CONFIRMED
FROM CUSTOMER CU
INNER JOIN
(SELECT
*
FROM (SELECT SECONDD.*,
MAX (S.TIMESTAMP) OVER (PARTITION BY S.ID)
AS MAXTIMESTAMP
FROM SETTINGS SECONDD)
WHERE TIMESTAMP = MAXTIMESTAMP) SECONDD
ON SECONDD.ID = CU.ID
推荐阅读
- apache - 将 HTTP 和 HTTPS 请求重定向到临时页面 - https:// 不重定向
- css - 在 react 中实现内联 css
- css - 没有在 expres 上加载 css
- swift - 在 Swift 中记录泛型类型参数是否有降价?
- regex - 如何将 htaccess 转换为 nginx
- node.js - 有没有办法让 node js 脚本确定它是否在 vscode 集成终端中运行?
- python - 如何将 qraphicsitems 的位置保存和加载到 qraphicscene 或(正确地显示项目)
- machine-learning - 为什么循环学习率调度器会导致性能变差?
- encryption - 如何从 dll 文件中检索加密密钥?
- mysql - 尽管更改了端口,但 Mysql 服务器未在 xampp 上启动