小编mas*_*tti的帖子

当您知道联接会产生重复项时,SELECT DISTINCT 是不好的做法吗?

有时,在构建查询时,我知道由于其中一个连接表而会出现重复项。使用更严格的连接语句和/或在子查询中使用 SELECT DISTINCT 删除这些重复项,而不是对整个事情使用 SELECT DISTINCT 语句,是否是更好的做法?

例如:

SELECT PL.STATION,
PL.PART_NUMBER,
PD.DESCRIPTION
FROM SAMPLE_DB.PART_LOCATOR PL
LEFT JOIN PROD_SAMPLE_DB.PART_DETAIL PD
ON PL.PART_NUMBER = PD.PART_NUMBER
WHERE PL.PART_NUMBER = '4077968'
AND PL.STATION = 'ATL'

4 rows returned.
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

显然我可以使用 SELECT DISTINCT 来获取唯一值:

SELECT DISTINCT PL.STATION,
PL.PART_NUMBER,
PD.DESCRIPTION
FROM SAMPLE_DB.PART_LOCATOR PL
LEFT JOIN PROD_SAMPLE_DB.PART_DETAIL PD
ON PL.PART_NUMBER = PD.PART_NUMBER
WHERE PL.PART_NUMBER = '4077968'
AND PL.STATION = 'ATL'

1 row returned.
Run Code Online (Sandbox Code Playgroud)

但这是更好的形式吗(使连接更加具体)?

SELECT PL.STATION,
PL.PART_NUMBER,
PD.DESCRIPTION
FROM SAMPLE_DB.PART_LOCATOR PL
LEFT JOIN PROD_SAMPLE_DB.PART_DETAIL PD
ON PL.PART_NUMBER = …
Run Code Online (Sandbox Code Playgroud)

sql

4
推荐指数
1
解决办法
8847
查看次数

删除替换字符?从列

根据我迄今为止的研究,这个字符表示数据库和前端之间的编码错误。不幸的是,我对其中任何一个都没有任何控制权。我正在使用 Teradata Studio。

如何过滤掉这个字符?我正在尝试对REGEX_SUBSTR偶尔包含 的列执行一个函数?,这会引发错误“字符串包含不可翻译的字符”。

这是我的 SQL。AIRCFT_POSITN_ID是包含替换字符的列。

 SELECT DISTINCT AIRCFT_POSITN_ID, 
 REGEXP_SUBSTR(AIRCFT_POSITN_ID, '[0-9]+') AS AUTOROW
 FROM PROD_MAE_MNTNC_VW.FMR_DISCRPNCY_DFRL 
 WHERE DFRL_CREATE_TMS > CURRENT_DATE -25
Run Code Online (Sandbox Code Playgroud)

sql teradata

3
推荐指数
1
解决办法
6162
查看次数

标签 统计

sql ×2

teradata ×1