繁体   English   中英

如何在SQL中将表的两列与其他表的两列连接

[英]how to join two columns of the table with two columns of other table in sql

我在#temp表上有2列SKU_neworder_ID与订单表的SKUID列匹配,我正在使用内部 联接 ,但它会继续执行并且不会显示任何结果。

我的查询是

SELECT t.SKU_new, t.ID_Order
INTO #caseone
FROM dbo.Order_No AS n JOIN
     dbo.Orders AS o
     ON n.Order_No = o.Order_No JOIN
     #Temp AS t
     ON (t.ID_Order = o.ID or t.SKU_new = o.SKU);

阅读问题时,您说“ 2列SKU_new order_ID”

基于此,您是否不会在Join中使用AND而不是OR?

SELECT  t.SKU_new
,       t.ID_Order
INTO    #caseone
FROM    dbo.Order_No AS n
        JOIN dbo.Orders AS o ON n.Order_No = o.Order_No
        JOIN #Temp AS t ON t.ID_Order = o.ID
                           AND t.SKU_new = o.SKU;

在两种情况下,查询继续执行

一种是当表上有未提交的事务时尝试

 SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED
        SELECT t.SKU_new, t.ID_Order
        INTO #caseone
        FROM dbo.Order_No AS n JOIN
       dbo.Orders AS o
       ON n.Order_No = o.Order_No JOIN
       #Temp AS t
       ON (t.ID_Order = o.ID or t.SKU_new = o.SKU)

如果是方案2,则可能有那么多具有错误索引的记录。 要检查是否正在获取记录,请在选择中尝试“顶部”

        SELECT Top 1  t.SKU_new, t.ID_Order
        INTO #caseone
        FROM dbo.Order_No AS n JOIN
       dbo.Orders AS o
       ON n.Order_No = o.Order_No JOIN
       #Temp AS t
       ON (t.ID_Order = o.ID or t.SKU_new = o.SKU

我认为这可能是您想要的。

SELECT t.SKU_new
, t.ID_Order
INTO #caseone
FROM #temp t 
JOIN dbo.orders o 
    ON t.ID_Order = o.ID 
    AND t.SKU_new = o.SKU
JOIN dbo.Order_No n 
    ON n.Order_No = o.Order_No 

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM