Oracle 如何防止在select查询中选择重复的行?
我的任务是从Oracle数据库中选择关键数据,但我注意到我的select返回了重复的行。我的报告不需要它们,但我不希望它们删除它们。有人能帮我得到我需要的数据吗。我已经尝试了以下代码,但这没有帮助Oracle 如何防止在select查询中选择重复的行?,oracle,duplicate-removal,Oracle,Duplicate Removal,我的任务是从Oracle数据库中选择关键数据,但我注意到我的select返回了重复的行。我的报告不需要它们,但我不希望它们删除它们。有人能帮我得到我需要的数据吗。我已经尝试了以下代码,但这没有帮助 SELECT distinct bbp.SUBCAR "Treadwell", bbp.BATCH_ID "Batch ID", bcs.SILICON "Si", bcs.SULPHUR "S", bcs.MANGANESE "Mn",
SELECT distinct bbp.SUBCAR "Treadwell",
bbp.BATCH_ID "Batch ID",
bcs.SILICON "Si",
bcs.SULPHUR "S",
bcs.MANGANESE "Mn",
bcs.PHOSPHORUS "P",
to_char(bcs.SAMPLE_TIME, 'dd-MON-yy hh24:MI') "Sample Time",
to_char(bbp.START_POUR, 'dd-MON-yy hh24:MI') "Start Pour Time",
to_char(bbp.END_POUR, 'dd-MON-yy hh24:MI') "End pour Time",
bofcs.temperature "Temperature"
FROM bof_chem_sample bcs, bof_batch_pour bbp, bof_celox_sample bofcs
WHERE bcs.SAMPLE_CODE= to_char('D1')
AND bbp.BATCH_ID=bcs.BATCH_ID
AND bcs.SAMPLE_TIME>=to_date('01-jan-10')
如果SELECT语句中有一个DISTINCT,那么所有返回的记录在您选择的列中都有一个唯一的值组合。您需要确定哪些列在您认为重复的记录中返回不同的值。如果查看转换为SQL Server类型SQL的查询,您将看到您的BOFC表与其余数据之间没有关系。基本上,它返回BOFC温度场中的每个记录,这可能会产生重复的结果
SELECT
bbp.SUBCAR "Treadwell",
bbp.BATCH_ID "Batch ID",
bcs.SILICON "Si",
bcs.SULPHUR "S",
bcs.MANGANESE "Mn",
bcs.PHOSPHORUS "P",
to_char(bcs.SAMPLE_TIME,'dd-MON-yy hh24:MI') "Sample Time",
to_char(bbp.START_POUR, 'dd-MON-yy hh24:MI') "Start Pour Time",
to_char(bbp.END_POUR, 'dd-MON-yy hh24:MI') "End pour Time",
bofcs.temperature "Temperature"
FROM
bof_chem_sample bcs,
INNER JOIN
bof_batch_pour bbp,
ON
bbp.BATCH_ID=bcs.BATCH_ID
INNER JOIN
bof_celox_sample bofcs
ON
**-- NO RELATION B/N BOFCS and the other tables????**
WHERE
bcs.SAMPLE_CODE= to_char('D1') AND
bcs.SAMPLE_TIME>=to_date('01-jan-10')
接得好,我从没发现过。这是一个完整的笛卡尔连接,难怪有很多重复:)谢谢,这是朝着正确方向迈出的一大步。由于这个原因,我注意到了和数据库本身的一些其他断开的连接。在查询中看到
distinct
,可能会敲响警钟。这通常是为了掩盖查询或数据库设计中的一些问题?