如何将两个字段不一样的表合为一个表?

xd888 2008-04-12 03:34:16
table1 (dateline唯一)
tid, value1,dateline
1 1 2008-04-01
1 2 2008-04-02

table2 (dateline唯一)
tid, value2,dateline
1 5 2008-04-02
1 6 2008-04-03

我要得到tid=1的结果
dateline, value1, value2
2008-04-01 1 0
2008-04-02 2 5
2008-04-03 0 6

请问怎样写?望各位不吝赐教,谢谢
...全文
104 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
懒得去死 2008-04-14
  • 打赏
  • 举报
回复
你的问题就是一个全连接,用 1 楼的方法吧 。
liuyann 2008-04-12
  • 打赏
  • 举报
回复

2次查询
//1
rs.open; // mySQL execute time + network transfer time (n1 条记录)
for (....) {}; //n1 条记录
rs.close;
//2
rs.open; // mySQL execute time + network transfer time (n1 条记录)
for (....) {}; //n2 条记录
rs.close;

一次
rs.open; // mySQL execute time + network transfer time (n1+n2 条记录)
for (....) {}; //n1+n2 条记录
rs.close;

所以差别不大
差别仅在 mySQL execute time = (SQL parse + SQL compile + SQL execute)
所以理论是 一次 可能会略快一点。 但要看你的表结构及数据记录量。

从程序设计是来说 一次 会使程序结构更清晰.

==== ====
xd888 2008-04-12
  • 打赏
  • 举报
回复
我现在是分别将两个表的数据读出,在合为一个数组,不知2次查询的效率高还是你这样一次查询的效率高?
liuyann 2008-04-12
  • 打赏
  • 举报
回复

没什么其他好办法了
目前还不支持 双外连接
==== ====
xd888 2008-04-12
  • 打赏
  • 举报
回复
这样写感觉不够简洁,还不如分两次查询吧
liuyann 2008-04-12
  • 打赏
  • 举报
回复

select table1.dateline,table1.value1,table2.value2
from table1 left jion table2 on table1.tid=table2.tid
union
select table2.dateline,table1.value1,table2.value2
from table1 right jion table2 on table1.tid=table2.tid
where table1.tid is null

==== ====

56,687

社区成员

发帖
与我相关
我的任务
社区描述
MySQL相关内容讨论专区
社区管理员
  • MySQL
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧