SQL如何查询表全部字段同时将idcastncrew别名设为castncrewid
问题原因
你尝试的SELECT idcastncrew AS castncrewid, * FROM subscriber写法不符合大多数SQL方言的语法规范:当*前有显式指定的独立列时,必须给*加上表名或表别名作为限定,否则会触发语法错误。
可行解决方案
方案1:最简适配写法(兼容所有主流数据库)
如果可以接受查询结果中同时出现别名后的castncrewid、以及原表自带的idcastncrew字段,仅需要给*增加表限定即可,完全符合你要简写的需求:
-- 写法1:直接用原表名限定 SELECT idcastncrew AS castncrewid, subscriber.* FROM subscriber; -- 写法2:用表别名简化,更简洁 SELECT idcastncrew AS castncrewid, s.* FROM subscriber s;
方案2:无重复列实现
如果你不需要结果中保留重复的原始idcastncrew字段,有两种选择:
- 通用兼容写法:显式列出所有需要的字段,也就是你当前在用的写法,兼容性最好,可完全控制返回列的顺序和内容。
- PostgreSQL专属简写:如果使用PostgreSQL数据库,可以用如下语法省略枚举所有列:
SELECT idcastncrew AS castncrewid, (s).* EXCEPT (idcastncrew) FROM subscriber s;
内容的提问来源于stack exchange,提问作者Deepak Dev
相关产品推荐
相关产品推荐

