有时,在构建查询时,我知道由于其中一个连接表而会出现重复项。使用更严格的连接语句和/或在子查询中使用 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) 根据我迄今为止的研究,这个字符表示数据库和前端之间的编码错误。不幸的是,我对其中任何一个都没有任何控制权。我正在使用 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)