子查询问题,高手快来!

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,也是动态取的,所有程序都可能会用到这个查询。

这种查询有没有什么好的方法?
...全文
147 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
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

再查询中选哪个表的字段要指明白

22,296

社区成员

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

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