Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/database/8.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
Mysql 根据两个单独表中的条件从一个表中选择行_Mysql_Database - Fatal编程技术网

Mysql 根据两个单独表中的条件从一个表中选择行

Mysql 根据两个单独表中的条件从一个表中选择行,mysql,database,Mysql,Database,我已经尝试对以下语句使用JOIN和WHERE语句,但我要么因为运行时间太长而得到超时,要么得到重复的列名错误 我有三张桌子: 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已经有大约。。。一周后,这是我得到的最接近的时间(它挂起): 谢谢你的帮助 使用LEFT Join将A、B和C连接在一起

我已经尝试对以下语句使用JOIN和WHERE语句,但我要么因为运行时间太长而得到超时,要么得到重复的列名错误

我有三张桌子: 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已经有大约。。。一周后,这是我得到的最接近的时间(它挂起):


谢谢你的帮助

使用
LEFT Join
将A、B和C连接在一起,然后保留A中出现B或C中匹配的记录


如果尚未创建D表,则使用与表A相同的定义创建它。

介意对您使用的每个步骤/术语进行一些解释吗?我对该语言不是很熟悉。由于我的表尚未构建,我会使用“创建”而不是“插入到”吗?@Stacksofoverflow是的,如果尚未创建表D,请继续创建它。因为它应该与表A具有相同的结构,所以您可以重用表A的定义。好的,谢谢,您知道mysql/sql中有什么好的介绍性文本吗?信不信由你,我只是通过在工作中使用mysql学习的,这也导致了堆栈溢出。也就是说,一个我用作参考的优秀站点也有一个很好的SQL教程,您可以在这里找到它:。
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));
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