php - mysql 中的完整 OUTER JOIN 或 UNION

标签 php mysql join

我有两个临时表 temp1 和 temp2(它们是在运行时创建的)。我需要执行“FULL outer JOIN”以从两个表中获取数据。但是我得到了错误

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 在 MySQL 中是不可能的 Full Outer Join in 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

所以请帮我解决这个问题。提前致谢。

最佳答案

编辑:完全错过了关于临时表的部分,不知道这是否可行...

sqlfiddle:http://sqlfiddle.com/#!2/3bf61/10

我没有 100% 得到你扔下的东西,让我试着改一下: 您有 2 个表:cashIntTempcashExtTemp。在单个查询中,您希望从两个表中获取所有行。预期结果是:

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

关于php - mysql 中的完整 OUTER JOIN 或 UNION,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20320213/

相关文章:

javascript - 如何使用 href 调用函数?

mysql - 有没有更好的方法来执行这些 mysql 查询?

php - 为 WHERE 条件选择相等数量的记录

sql - 连接中 "and"和 "where"之间的差异

php - fatal error : require(): Failed opening required 'C:\wamp\www\sep24\e/src/functions.php' (include_path ='.;C:\php\pear' )

php - 'E5V7D24M10Y2015' 中的未知列 'where clause'

php - 如何查询所有根行的所有子层次结构的所有明细行?

mysql - IF THEN + 1 到特定行/列?

mysql - 根据 'is in table/is not in table'排序查询输出

hibernate - JPA/Hibernate 中的条件/复合 JoinColumn