2 zxc software zxc_software 于 2015.06.01 11:37 提问

sql多表查询图形化界面查询返回结果与程序端hibernate查询结果不符。 20C

我使用多表查询,其中一个表与令一个表字段名相同,在hibernate界面后一个与前一个字段名相同的字段输出结果也与前一个字段名相同。前问在不改字段名的情况下有什么办法解决?(以下d.name与p.name输出结果一样,显然d.name输出结果是错的)
select p.id,p.name,p.post_coefficient,d.name ,postType,a.areaName,p.postHour,p.shortcode,p.menzhen from t_post p ,t_department d ,t_area a where p.pid = d.id and p.areaId = a.id and p.pid = ?

5个回答

beacon_2011
beacon_2011   Rxr 2015.06.01 11:53

肯定不能定义两个相同的字段名~这个需求无解

zxc_software
zxc_software 呵呵
2 年多之前 回复
victorxie99
victorxie99   2015.06.01 12:16

select p.id,p.name as p_name,p.post_coefficient,d.name as d_name ,postType,a.areaName,p.postHour,p.shortcode,p.menzhen from t_post p ,t_department d ,t_area a where p.pid = d.id and p.areaId = a.id and p.pid = ?

zxc_software
zxc_software 不行
2 年多之前 回复
zxc_software
zxc_software   2015.06.01 14:24

用ifnull函数解决了。

select p.id,ifnull(p.name,"NULL") as p_name,p.post_coefficient,ifnull(d.name,"NULL") as d_name,postType,a.areaName,p.postHour,p.shortcode,p.menzhen from t_post p ,t_department d ,t_area a
where p.pid = d.id and p.areaId = a.id and p.pid = 1

guonan198811
guonan198811   2015.06.03 18:25

查找的时候用as将相同的字段名限定在表名之下,然后再写比较条件就可以了

victorxie99
victorxie99   2015.06.11 17:17
您没有说 ifnull(p.name,"NULL") as p_name, name 是NULL所以只 p.name as p_name 这样写.
Csdn user default icon
上传中...
上传图片
插入图片