Sql 如何避免SELECT语句中来自多个表的重复行?
我正在使用SQL Server从多个表中进行选择,但它会复制行这是我的Sql 如何避免SELECT语句中来自多个表的重复行?,sql,sql-server,duplicates,Sql,Sql Server,Duplicates,我正在使用SQL Server从多个表中进行选择,但它会复制行这是我的select语句: select Lab_orders_Cash.cash_order_id as 'Order Number', Patients.Patient_No as 'Patient No', Patients.Patient_Name as 'Patient Name', Patients.Age as 'Patient Age', labtests.testid as
select
语句:
select
Lab_orders_Cash.cash_order_id as 'Order Number',
Patients.Patient_No as 'Patient No',
Patients.Patient_Name as 'Patient Name',
Patients.Age as 'Patient Age',
labtests.testid as 'testid',
LabTests.TestName as 'Test Name',
Lab_orders_Cash.order_date,
Lab_orders_Cash.USER_ID as 'Requested By' ,
Lab_Hematology_Samples.COLLECTION_DATE as 'Collection Date',
Lab_Hematology_Samples.COLLECTED_BY as 'Collected By' ,
Lab_Hematology_Samples.RECEIVING_DATE as 'Receiving Date' ,
Lab_Hematology_Samples.RECEIVED_BY as 'Received By'
from
Lab_orders_Cash
inner join
Order_Details_Cash on Lab_orders_Cash.cash_order_id = Order_Details_Cash.CASH_ORDER_ID
inner join
patients on Lab_orders_Cash.patient_no = Patients.Patient_No
inner join
LabTests on Order_Details_Cash.TESTID=LabTests.TestId
inner join
Lab_Hematology_Samples on Lab_orders_Cash.cash_order_id= Lab_Hematology_Samples.ORDER_ID
where
Lab_orders_Cash.patient_no = 32
我在实验室血液学中选择了1个现金订单id和2个项目,当我添加这个内部连接时,它的重复样本
inner join Lab_Hematology_Samples on Lab_orders_Cash.cash_order_id= Lab_Hematology_Samples.ORDER_ID
它显示每个项目2次2行,因为订单包含2个项目如果订单包含3个项目,它将显示每个项目3次如何避免重复选择,主键是每个表中的id列?您可以使用
选择不同的
来避免结果中的重复。
但是,此操作将对您的运行时产生负面影响(尤其是在处理大型数据库时),因此您应该仅在存在重复项的情况下使用此操作。如果每个重复行的
Lab\u Hematology\u Samples
中的列相同(如数据相同)然后只需将SELECT
更改为selectdistinct
,然后让它运行。如果这些列对于每个重复行具有不同的值,那么您需要确定哪一个是您想要的,并进行适当的聚合(max()、min()、avg()等)。