簡體   English   中英

根據兩個單獨表中的條件從一個表中選擇行

[英]Selecting Rows from one table based on conditions in two separate tables

我曾嘗試使用joins和where語句進行以下操作,但由於運行時間太長而導致超時或出現重復的列名錯誤。

我有3個表:A,B,C我想基於B和C的約束創建一個由A的行組成的表。因此A中的行必須滿足B或C中的條件:

(A.ID = B.ID和A.PURCHASE = B.PURCHASE)或(A.ID = C.ID和A.PURCHASE = C.PURCHASE)。

我一直在使用mysql大約一個星期,這是我最近得到的(掛起):

CREATE TABLE D
SELECT T1.* 
FROM TABLE A AS T1, TABLE B AS T2, TABLE B AS T3
JOIN T2, T3 ON ((T1.CUSTOMER_ID = T2.CUSTOMER_ID AND T1.DAY_ID = 
T2.DAY_ID) OR (T1.CUSTOMER_ID = T3.CUSTOMER_ID AND T1.DAY_ID = T2.DAY_ID));

謝謝你的幫助!

連接在一起的A,B和C使用LEFT JOIN ,然后保留從A記錄,其中一個匹配發生在B C.

INSERT INTO D
SELECT DISTINCT a.*      -- remove duplicate records
FROM tableA a
LEFT JOIN tableB b
    ON a.CUSTOMER_ID = b.CUSTOMER_ID AND a.DAY_ID = b.DAY_ID
LEFT JOIN tableC c
    ON a.CUSTOMER_ID = c.CUSTOMER_ID AND a.DAY_ID = c.DAY_ID
WHERE b.CUSTOMER_ID IS NOT NULL OR    -- retain records where either
      c.CUSTOMER_ID IS NOT NULL       -- condition matches

如果尚未創建D表,則使用與表A相同的定義來創建它。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM