子查询问题,高手快来!

wxlys 2006-03-16 05:18:35
功能:
从第二层查询中查询部分字段。
例:
SELECT F1,F2,F3,F4 FROM (SELECT * FROM TABLE1 INNER JOIN TABLE2 ON TABLE1.F1=TABLE2.F1) T1
现在执行查询时提示:
服务器: 消息 8156,级别 16,状态 1,行 1
多次为 'T1' 指定了列 'F1'。

但是我不能确定F1为TABLE1还是TABLE2还是其它表,因为括号里的查询是动态的,我也不知道会是什么语句,前面的F1,F2,F3,F4,也是动态取的,所有程序都可能会用到这个查询。

这种查询有没有什么好的方法?
...全文
65 点赞 收藏 7
写回复
7 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
wxlys 2006-03-16
再把思路理一下,看看有没有什么好的办法:

要做一个通用的导出数据到EXCEL的功能,数据是某记录集(不确定,根据用户的操作)的指定列(列也不确定,也由用户指定),

现在能得到的只是记录集和用户指定了哪些列(字段)

所以就出现上面的情况"SELECT F1,F2,F3,F4 FROM (" & ADORS.SOURCE & ") T1"
回复
wxlys 2006-03-16
rivery(river) 说的极有道理

所以,我也找不出什么好办法来了,原因是
SELECT * FROM TABLE1 INNER JOIN TABLE2 ON TABLE1.F1=TABLE2.F1这样的查询已经定死了,要改的话,工作量太大了

现在是想从这样的记录集中导出指定列(不确定,由用户选择)到EXCEL中,感觉没招了。
回复
rivery 2006-03-16
原因是这句中
SELECT * FROM TABLE1 INNER JOIN TABLE2 ON TABLE1.F1=TABLE2.F1
table1 和table2 都有F1列,你使用*取出了所有列,但是这个查询需要作为子表用的,那么必须查询出的列名必须是唯一的。所以你需要对俩表中公共的列名加别名。
回复
lsqkeke 2006-03-16
你贴出那两个表的结构及数据
然后说明要显示的格式或想得到的结果!
可以解决的啊!
回复
wxlys 2006-03-16
应该没有办法了,只能想其它出路!
回复
wxlys 2006-03-16
现在是没有指明,要改的话就要翻天了!!

有没有别的办法?
回复
lsqkeke 2006-03-16
要在子查询中指定列名:

SELECT F1,F2,F3,F4 FROM (SELECT F1,F2,F3,F4 FROM TABLE1 INNER JOIN TABLE2 ON TABLE1.F1=TABLE2.F1) T1

再查询中选哪个表的字段要指明白
回复
相关推荐
发帖
疑难问题
创建于2007-09-28

2.1w+

社区成员

MS-SQL Server 疑难问题
申请成为版主
帖子事件
创建了帖子
2006-03-16 05:18
社区公告
暂无公告