现在的位置: 首页 > 综合 > 正文

Oracle 里面有相同的列名时在java里取值时那个列需要有一个别名

2017年02月20日 ⁄ 综合 ⁄ 共 1101字 ⁄ 字号 评论关闭

1. 我在java里写这样的SQL语句:

 String sql = "SELECT MP.ID, MP.PROJECT_NAME, MP.HARDWARE_VERSION, MP.SOFTWARE_VERSION, MT.TYPE_NAME, MTV.TYPE_VALUE, MP.DELETE_FLAG, MTV.ID FROM (SELECT * FROM MOBILE_PROJECT WHERE  ID = ?) MP LEFT JOIN  MOBILE_PROJECT_TYPE_MAPPING MPTM ON MP.ID = MPTM.PROJECT_ID LEFT JOIN MOBILE_TYPE MT ON MPTM.TYPE_ID = MT.ID LEFT JOIN MOBILE_TYPE_VALUE MTV ON MPTM.TYPE_VALUE_ID = MTV.ID";
        List<Object[]> projectList = dao.executeSelectSql(sql, id);
由于取出来的值里有两个ID,结果在Debug这个取出来的projectList时,发现第二个ID列和第一列的ID值是一样的。
<img src="http://img.blog.csdn.net/20141029103106735?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvemhhb3lpbmdqaWFv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="" />

但是数据库里取出来则是正确的:

2. 把java里面的SQL语句改了在前台才能正确的取到第二个重复的ID:

String sql = "SELECT MP.ID, MP.PROJECT_NAME, MP.HARDWARE_VERSION, MP.SOFTWARE_VERSION, MT.TYPE_NAME, MTV.TYPE_VALUE, MP.DELETE_FLAG, MTV.ID MTVID FROM (SELECT * FROM MOBILE_PROJECT WHERE  ID = ?) MP LEFT JOIN  MOBILE_PROJECT_TYPE_MAPPING MPTM ON MP.ID = MPTM.PROJECT_ID LEFT JOIN MOBILE_TYPE MT ON MPTM.TYPE_ID = MT.ID LEFT JOIN MOBILE_TYPE_VALUE MTV ON MPTM.TYPE_VALUE_ID = MTV.ID";
        List<Object[]> projectList = dao.executeSelectSql(sql, id);

抱歉!评论已关闭.