今天在使用LEFT JOIN查询数据时,遇到一个奇怪的问题(使用的是HIBERNATE框架),就是通过SQL查询出来的值,在DB2的编辑器里面 和 在程序中得到的结果不一样。
背景:
一个USER表, 一个RECORD表。
其中,RECORD表中有两个字段,分别是CREATORID, AUDITORID, 它们都与USER表的USERID关联。即外键关系。
我的查询语句如下:
SELECT RECORD.*,CREATOR.*, AUDITOR.*
FROM RECORD left join USER AS CREATOR on RECORD.CREATORID=CREATOR.USERID
left join USER AS AUDITOR on RECORD.AUDITORID=AUDITOR.USERID
该语句在DB2的编辑器中执行的结果正常。但在程序中取出到creatorid 和 auditorid 的值是一样的。
后来通过搜索,在才现在查询结果集中不能存在字段名称一样的字段。重命名字段名后正常。
修改后的SQL语句如下:
SELECT RECORD.*,CREATOR.userid AS creatorid, AUDITOR.userid AS auditorid
FROM RECORD left join USER AS CREATOR on RECORD.CREATORID=CREATOR.USERID
left join USER AS AUDITOR on RECORD.AUDITORID=AUDITOR.USERID
背景:
一个USER表, 一个RECORD表。
其中,RECORD表中有两个字段,分别是CREATORID, AUDITORID, 它们都与USER表的USERID关联。即外键关系。
我的查询语句如下:
SELECT RECORD.*,CREATOR.*, AUDITOR.*
FROM RECORD left join USER AS CREATOR on RECORD.CREATORID=CREATOR.USERID
left join USER AS AUDITOR on RECORD.AUDITORID=AUDITOR.USERID
该语句在DB2的编辑器中执行的结果正常。但在程序中取出到creatorid 和 auditorid 的值是一样的。
后来通过搜索,在才现在查询结果集中不能存在字段名称一样的字段。重命名字段名后正常。
修改后的SQL语句如下:
SELECT RECORD.*,CREATOR.userid AS creatorid, AUDITOR.userid AS auditorid
FROM RECORD left join USER AS CREATOR on RECORD.CREATORID=CREATOR.USERID
left join USER AS AUDITOR on RECORD.AUDITORID=AUDITOR.USERID