我有两个临时表,分别是temp1和temp2(在运行时创建)。我需要执行“完全外连接”来从两个表中获取数据。但我弄错了
Error Number: 1064
You have an error in your SQL syntax; check the manual that corresponds to your
MySQL server version for the right syntax to use near 'FULL OUTER JOIN cashExtTemp t2
ON t1.code = t2.code'
SELECT * FROM cashIntTemp t1 FULL OUTER JOIN cashExtTemp t2 ON t1.code = t2.code并从这个链接Full Outer Join in MySQL了解到在MySQL中完全的外部连接是不可能的,并尝试实现链接中给出的UNION。因为我使用的是临时表,所以它不能工作,我得到的错误是
Error Number: 1137
Can't reopen table: 't1'这是我的联合查询
SELECT * FROM cashIntTemp t1 LEFT JOIN cashExtTemp t2 ON t1.code = t2.code
UNION
SELECT * FROM cashIntTemp t1 RIGHT JOIN cashExtTemp t2 ON t1.code = t2.code表中的数据如下表所示: cashIntTemp
code qty date
P001 100 2013-11-29
P003 200 2013-11-30
P005 600 2013-11-30表中的数据如下表所示: cashIntTemp
code qty date
P001 110 2013-11-29
P002 250 2013-12-01
P005 650 2013-12-01我需要一个查询来获取这两个表中的所有数据。
我需要这种格式的结果
code qty date code qty date
P001 100 2013-11-29 P001 110 2013-11-29
P002 250 2013-12-01
P003 200 2013-11-29
P005 600 2013-11-29 P005 650 2013-11-29所以请帮我解决这个问题。提前谢谢。
发布于 2013-12-02 11:37:00
编辑:完全错过了关于临时表的部分,不知道这是否会起作用…
sqlfiddle:http://sqlfiddle.com/#!2/3bf61/10
我不能100%地得到你所抛出的东西,让我试着换个说法:你有两个表:cashIntTemp和cashExtTemp。在一个查询中,您希望从两个表中提取所有行。预期的结果是:
CODE QTY DATE
P001 100 November, 29 2013 00:00:00+0000
P002 250 December, 01 2013 00:00:00+0000
P003 200 November, 30 2013 00:00:00+0000
P005 650 December, 01 2013 00:00:00+0000
P005 600 November, 30 2013 00:00:00+0000只要它们是不同的表,UNION就会提供您想要的东西,同样是根据@Ryan。问题的一部分引用了两个不同的表,而另一部分引用了同一个表。
下面的内容不应该是你想要的吗?
SELECT * FROM `cashIntTemp` as `t1`
UNION
SELECT * FROM `cashExtTemp` as `t2`
ORDER BY `code`或者,如果不想过滤重复的行,可以使用use UNION ALL:http://sqlfiddle.com/#!2/3bf61/11
查询:
SELECT * FROM `cashIntTemp` as `t1`
UNION ALL
SELECT * FROM `cashExtTemp` as `t2`
ORDER BY `code`结果:
CODE QTY DATE
P001 100 November, 29 2013 00:00:00+0000
P001 100 November, 29 2013 00:00:00+0000
P002 250 December, 01 2013 00:00:00+0000
P003 200 November, 30 2013 00:00:00+0000
P005 650 December, 01 2013 00:00:00+0000
P005 600 November, 30 2013 00:00:00+0000发布于 2013-12-02 11:09:09
在MySql中,您不能在同一查询中多次访问单个临时表。你正在模拟完全的外连接,左连接联合到右连接,对吗?
您必须在单独的查询中将左连接的结果集和右连接的结果集插入到单独的临时表中(即,不使用联合)。
讲得通?
https://stackoverflow.com/questions/20320213
复制相似问题