Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 如何避免SELECT语句中来自多个表的重复行?_Sql_Sql Server_Duplicates - Fatal编程技术网

Sql 如何避免SELECT语句中来自多个表的重复行?

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

我正在使用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 '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()等)。