有没有办法可以强制SQL查询语句返回的结果字段带表名前缀?

MikeCheers 2009-07-15 07:59:33
如题
假设有表
table A: userid, username
table B: loginid, userid, logindate
当执行 select * from A,B 时,返回如下结果
userid | username | loginid | userid | logindate
---------------------------------------------------------
****** | ******** | ******* | ****** | *********
****** | ******** | ******* | ****** | *********
****** | ******** | ******* | ****** | *********
****** | ******** | ******* | ****** | *********

这样是很难区分userid是哪个表的字段了
我题目的意图是无论何时,返回的结果是如下格式的
A.userid | A.username | B.loginid | B.userid | B.logindate
-------------------------------------------------------------------
******** | ********** | ********* | ******** | ***********
******** | ********** | ********* | ******** | ***********
******** | ********** | ********* | ******** | ***********
******** | ********** | ********* | ******** | ***********

就是明确指出返回的字段是属于哪个表(包括表的别名)的,但又不想每次都要在sql语句中指定,那样很烦,不知是否可以做得到.
这个需求属实不常见,有好办法,自然会追加分数.
...全文
413 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
MikeCheers 2009-07-17
  • 打赏
  • 举报
回复
To ChinaJiaBing, 非常感谢你的回答, 虽然感觉烦琐了些, 不过不韪是个解决方案; 让我联想到是否可以搞个函数来做这个事情:) 本人再静等一天,已经为了你的答案追加了分数,结帖时支付.

还期待有更出色的方案, 分数追加中...
ChinaJiaBing 2009-07-17
  • 打赏
  • 举报
回复

--try

if OBJECT_ID('a')is not null
drop table a
if OBJECT_ID('b')is not null
drop table b
go
create table a ( px int ,学号 int,name nvarchar(10))
create table b ( px int,学号 int,name nvarchar(10))
insert into a select 1, 1,'张三'
union all select 2, 2,'李四'
insert into b select 1,3,'王五'
union all select 2,4,'马六'
declare @str nvarchar(1000)
set @str =' select '
select @str=isnull(@str + ',','')+ b.name+'.'+a.name + ' as ' + b.name + a.name from dbo.syscolumns a join sysobjects b on a.id=b.id and a.id in (OBJECT_ID('a') ,object_id('b'))
set @str = stuff (@str,charindex(',',@str),1,'') +' from a,b'
exec(@str)

(2 行受影响)
apx a学号 aname bpx b学号 bname
----------- ----------- ---------- ----------- ----------- ----------
1 1 张三 1 3 王五
2 2 李四 1 3 王五
1 1 张三 2 4 马六
2 2 李四 2 4 马六

(4 行受影响)

feixianxxx 2009-07-17
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 mikecheers 的回复:]
是不是真的就没有解决办法啊 挺痛苦~
[/Quote]
就像你说的 你这个需求很少见。。
耐心 等高手
或者你重赏之下必有勇夫。加分
MikeCheers 2009-07-17
  • 打赏
  • 举报
回复
是不是真的就没有解决办法啊 挺痛苦~
MikeCheers 2009-07-15
  • 打赏
  • 举报
回复
来的都是星级人物啊 呵呵 荣幸
--小F-- 2009-07-15
  • 打赏
  • 举报
回复
feixianxxx 2009-07-15
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 mikecheers 的回复:]
感谢两位的回复

to feixianxxx: 我明白你的意思. 因为做一个系统可能需要做大量的存储过程, 又要涉及大量的表, 如果使用手动加别名的方式是可以达到目的,不过工作量大,还容易出错或遗漏,出错或遗漏的情况一旦出现,在茫茫存储过程中,想要找到它,绝非易事.

希望能有更好的办法.
[/Quote]
帮你顶顶吧
没听说过这个用法
MikeCheers 2009-07-15
  • 打赏
  • 举报
回复
感谢两位的回复

to feixianxxx: 我明白你的意思. 因为做一个系统可能需要做大量的存储过程, 又要涉及大量的表, 如果使用手动加别名的方式是可以达到目的,不过工作量大,还容易出错或遗漏,出错或遗漏的情况一旦出现,在茫茫存储过程中,想要找到它,绝非易事.

希望能有更好的办法.
feixianxxx 2009-07-15
  • 打赏
  • 举报
回复
只有给列取别名吧。。
select A.userid as [A.userid],username as [A.username],loginid as[B.loginid],
B.userid as [B.userid],logindate as [B.logindate]
from a join b on a.userid=b.userid
  • 打赏
  • 举报
回复
这个比较难,先关注
stven0 2009-07-15
  • 打赏
  • 举报
回复
关注中~~
MikeCheers 2009-07-15
  • 打赏
  • 举报
回复
顶顶

22,210

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 疑难问题
社区管理员
  • 疑难问题社区
  • 尘觉
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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