绝对够经典的SQL语句,在线求助!

sky 2005-07-18 11:03:58
某个表有20列,我想查询其中的19列,有不有比较简单的SQL语句可以用的?
我不想在SQL语句里写上19列的列名,能不能只写那一列不需要查询出来的列名就可以了?
谢谢,在线等
...全文
995 30 打赏 收藏 转发到动态 举报
写回复
用AI写文章
30 条回复
切换为时间正序
请发表友善的回复…
发表回复
sky 2005-07-21
  • 打赏
  • 举报
回复
今天中午结贴。最后顶一下。
sky 2005-07-20
  • 打赏
  • 举报
回复
唉,其实,我最希望的sql语句是类似于: select not column19 from table 这种的。

可惜上面的语句是不成立的。所以,我想知道有没有跟上面类似的语句?不过,既然这么多的高手都没有更简单的方法,那看来是没有的了。

希望以后的ansi sql 能解决这个问题。
qger00716 2005-07-20
  • 打赏
  • 举报
回复
感觉楼上的高手已经给你出了不少的解决办法,你怎么还是不满意阿?
Tongls 2005-07-19
  • 打赏
  • 举报
回复
这是不可能的!
sky 2005-07-19
  • 打赏
  • 举报
回复
楼上误会了,不是不能列出来,是列出来太麻烦了。

如果有100列,我只要其中的99列,那是不是就需要写99列的列名称?这样,一是在书写上有很大的麻烦,二是有可能写错,所以,我想知道有没有更好的办法能解决这个问题?

谢谢关注
spyol 2005-07-19
  • 打赏
  • 举报
回复
给个理由先,为什么不能列出来啊?
解决不了,帮你顶个
goodliu269 2005-07-19
  • 打赏
  • 举报
回复
up
jadexuxu 2005-07-19
  • 打赏
  • 举报
回复
关注中 帮顶
shentw 2005-07-19
  • 打赏
  • 举报
回复
select * from 语句中的“*”要消耗大量的翻译解释时间,降低效率,建议不要这样使用,
如果不想写这个select 字段名 from 这类的语句,可以用工具自动生成啊。
shentw 2005-07-19
  • 打赏
  • 举报
回复
select * from 语句中的“*”要消耗大量的翻译解释时间,降低效率,建议不要这样使用,
如果不想写这个select 字段名 from 这类的语句,可以用工具自动生成啊。
dp_555 2005-07-19
  • 打赏
  • 举报
回复
oracle很麻烦
用存储过程可以拼sql剔掉你这个列,但是oracle的sp返回结果集是个问题
truelang 2005-07-19
  • 打赏
  • 举报
回复
到SQL中创建一个视图,然后把语句Copy出来不就行了,搞那么复杂???????
sky 2005-07-18
  • 打赏
  • 举报
回复
有没有什么方法,不用存储过程的呀?

偶还是觉得存储过程太麻烦了。呵呵,再次谢谢哦。
zlp321002 2005-07-18
  • 打赏
  • 举报
回复
declare @s as varchar(200)
declare @tablename as varchar(200)
set @tablename=表名
set @s=''
select @s=@s+','+ltrim(rtrim(name)) from
(
select a.name from syscolumns a, sysobjects d
where a.id=d.id and d.name=@tablename
)
A
set @s=stuff(@s,1,1,'')
--print @s
exec('select '+@s+' from '+@tablename+'')
--根据条件可以生成表列,如果指定19,就用top 19,自己想要的列,加个条件既可!

sky 2005-07-18
  • 打赏
  • 举报
回复
那在ORACLE中怎么实现呢?还请指教,谢谢。
jinfeiyang 2005-07-18
  • 打赏
  • 举报
回复
在MS SQL 中实现不了

在Oracle中可以实现的
Frewin 2005-07-18
  • 打赏
  • 举报
回复
Declare @str varchar(200)
SELECT @str= dbo.syscolumns.name
dbo.syscolumns.colid
FROM dbo.syscolumns INNER JOIN
dbo.sysobjects ON dbo.syscolumns.id = dbo.sysobjects.id
WHERE (dbo.sysobjects.xtype = 'U') And dbo.sysobjects.name ='表名' and dbo.syscolumns.colid=19


Exec('Select '+@str+' From tb')
Frewin 2005-07-18
  • 打赏
  • 举报
回复
SELECT dbo.sysobjects.xtype, dbo.syscolumns.name, dbo.sysobjects.name AS Expr1,
dbo.syscolumns.colid
FROM dbo.syscolumns INNER JOIN
dbo.sysobjects ON dbo.syscolumns.id = dbo.sysobjects.id
WHERE (dbo.sysobjects.xtype = 'U') And dbo.sysobjects.name ='表名' and dbo.syscolumns.colid=19
sky 2005-07-18
  • 打赏
  • 举报
回复
每个列的列名都很长的,如果写19个列名,确实是件很麻烦的事情。当然万一不行,也只能这样了。

但我在这里就是想知道有没有更好的方法?谢谢各位。

对了,我上面是把问题简化了的,如果是50个列名,或者更多,就更麻烦了
sky 2005-07-18
  • 打赏
  • 举报
回复
一楼的好意,我心领了。谢谢。

但我确实是因为一个特殊的原因,需要这样做呀,还请各位老大帮个忙,谢谢。
加载更多回复(10)

17,377

社区成员

发帖
与我相关
我的任务
社区描述
Oracle 基础和管理
社区管理员
  • 基础和管理社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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