表1
ID Date Intime Outtime
A001 20000501 12:00:00 22:00:00
A001 20000502 14:00:00 22:00:00
A001 20000503 12:00:00 23:00:00
A002 20000501 11:00:00 20:00:00
A002 20000502 13:00:00 21:00:00
所以......,
Table2
ID Date Intime Outtime
A001 20050501 14:00:00 23:00:00
A002 20050501 08:00:00 16:00:00
从上表
我想从Table1.ID = Table2.ID和Table1.Date = Table2.Date
上的Table1 Inner Join Table2中获取Table1.ID,Table1.Date,Table2.Intime,Table2.Outtime获取重复值
ID Date Intime Outtime
A001 20000501 14:00:00 23:00:00
A001 20000501 18:00:00 16:00:00
A002 20000501 14:00:00 23:00:00
A002 20000501 18:00:00 16:00:00
我也试过了Left outer Join。它显示了同样的情况。如何比较id和日期。
需要查询帮助吗?
答案 0 :(得分:1)
如果你进行内连接,你将只获得两个表中存在的那些行(就其ID和日期而言):
SELECT
Table1.ID, Table1.Date,
Table2.Intime, Table2.Outtime
FROM Table1
INNER JOIN Table2 ON Table1.ID = Table2.ID AND Table1.Date = Table2.Date
ID Date InTime OutTime
A001 20000501 14:00:00 23:00:00
A002 20050501 08:00:00 16:00:00
如果你没有得到这个,那么你的数据就会出现问题 - 正如我在上一个问题的回答中已经提到的那样。
检查此查询的输出:
SELECT * FROM Table2 WHERE ID = 'A001' AND Date = '20000501'
我打赌你会得到不止一排......
马克
试图进一步解释 - 我仍然认为你误解了INNER JOIN,或者你正在努力完成一些无法轻易完成的事情。
您的输出是这样的:
ID Date Intime Outtime
A001 20000501 14:00:00 23:00:00
A001 20000501 18:00:00 16:00:00
A002 20000501 14:00:00 23:00:00
A002 20000501 18:00:00 16:00:00
如果您真正从INNER JOIN获得此输出,则表示:
ID=A001
和Date=20000501
ID=A001
和Date=20000501
INNER JOIN将做的是将Table2中的第1行与Table1中的单行组合,然后将Table2中的第2行与Table1中的单行组合,依此类推。
如果表2中有多个具有相同(ID,日期)值的条目,则将通过INNER JOIN获得重复 - 这是设计上的,并不是错误 - 而只是INNER JOIN的工作方式。