求一条sql语句怎么写, 一个表单中的一个字段, 是另一个表单中的id, 要求查出另一个表单的某个字段

bizshow 2008-02-22 06:20:32
例如
表一
id name class ... ... ...
1 香蕉 1
2 荔枝 1
3 菠菜 2
4 大米 3
...

表二
id name
1 水果
2 蔬菜
3 粮食

我想select出来的结果是:
id name className ... ... ...
1 香蕉 水果
2 荔枝 水果
3 菠菜 蔬菜
4 大米 粮食

请问要怎么写? 谢谢啦...
...全文
198 16 打赏 收藏 转发到动态 举报
写回复
用AI写文章
16 条回复
切换为时间正序
请发表友善的回复…
发表回复
JL99000 2008-02-22
  • 打赏
  • 举报
回复
if object_id('表一') is not null
drop table 表一
if object_id('表二') is not null
drop table 表二
go
create table 表一(id int,name varchar(10),class int)
insert into 表一
select 1, '香蕉', 1 union all
select 2, '荔枝', 1 union all
select 3, '菠菜', 2 union all
select 4, '大米', 3
create table 表二(id int,name varchar(10))
insert into 表二
select 1, '水果' union all
select 2, '蔬菜' union all
select 3, '粮食'

select a.id,a.name,isnull(b.name,'') as className from 表一 a left join 表二 b
on a.class=b.id

楼主 接分了
bizshow 2008-02-22
  • 打赏
  • 举报
回复
呵呵,非常感谢, 又学到on的用法了
这下可惨我了, 以前的代码因为不知道这个用法, 都是查两个表, 然后再循环表二枚举出className
看来程序又有很多地方要改了...
bizshow 2008-02-22
  • 打赏
  • 举报
回复
很难决定饿... 貌似liangCK 与happyflystone 回答的是差不多的东东啊, 每人10分有点不公平吧
-狙击手- 2008-02-22
  • 打赏
  • 举报
回复
楼主比我快30秒,
bizshow 2008-02-22
  • 打赏
  • 举报
回复
感谢happyflystone 和liangCK , 可惜只有20分, 先回答的2/3, 没有意见吧...
liangCK 2008-02-22
  • 打赏
  • 举报
回复
结帖吧.
每人10分
-狙击手- 2008-02-22
  • 打赏
  • 举报
回复
感谢1楼的,   如果我表一中有很多字段,   不想一一列出,   打算用*,   可是这样又把表二的所有字段都取出来了,   应该怎么做呢?

---


select a.*,
b.name as classname
from table1 a
left join table2 b
on a.class = b.id
bizshow 2008-02-22
  • 打赏
  • 举报
回复
4楼, 5楼, 哈哈, 其实我就是在*号前面加上表一就可以了
select 表一.*, 表二.name as className from 表一 left join 表二 on class = 表二.id
不需要动态构造显示, 也没有5楼那么长的代码
liangCK 2008-02-22
  • 打赏
  • 举报
回复
select a.id,a.name
,isnull(b.name,'') classname
from 表1 a
left join 表2 b
on a.class=b.id
-狙击手- 2008-02-22
  • 打赏
  • 举报
回复
用isnull()
bizshow 2008-02-22
  • 打赏
  • 举报
回复
我已经自己试出来怎么做了, 呵呵, 可是就是当表二没有符合的数据的时候, 查出来的是null值, 请问有什么办法把他变成空格?
liangCK 2008-02-22
  • 打赏
  • 举报
回复
得到表中除Col1、Col2的所有列

例如:userno_fm、userno_to
create table test(
num int identity(1,1),
userno_fm varchar(10),
userno_to varchar(10),
username varchar(10))
select * from test

declare @sql varchar(8000)
select @sql=''
select @sql=@sql+','+[name] from
(select [name] from syscolumns where object_id(N'[test]')=[id] and [name] not in ('userno_fm','userno_to')) A

set @sql='select '+stuff(@sql,1,1,'')+' from [test]'
--print @sql
exec (@sql)

drop table test
liangCK 2008-02-22
  • 打赏
  • 举报
回复
这样就动态构造显示列了..
bizshow 2008-02-22
  • 打赏
  • 举报
回复
感谢1楼的, 如果我表一中有很多字段, 不想一一列出, 打算用*, 可是这样又把表二的所有字段都取出来了, 应该怎么做呢?
liangCK 2008-02-22
  • 打赏
  • 举报
回复
select a.id,a.name
,b.name
from 表1 a
left join 表2 b
on a.class=b.id
-狙击手- 2008-02-22
  • 打赏
  • 举报
回复
select a.id,a.name,b.name as classname,....
from table1 a
left join table2 b on a.class = b.id
内容概要:本文围绕基于三重移相控制(TPS)的双有源桥(DAB)高频隔离DC-DC变换器开展系统性研究,重点构建了其在Simulink环境下的高精度仿真模型。研究全面涵盖SPS单相移相、DPS双重重移相与TPS三重移相等多种控制策略的建模、实现与性能对比,深入分析不同模式下变换器的功率传输特性、软开关实现条件及功率回流问题,旨在提升DAB在交直流混合微电网、能量路由器、多端口柔性互联装置等场景的转换效率与动态响应能力。通过对ZVS(零电压切换)条件的精确控制与移相角参数的优化,有效降低了开关损耗,增强了系统整体能效与运行稳定性。该仿真模型具有良好的可扩展性,适用于复杂电能转换系统的科研验证与工程开发。; 适合人群:电力电子、电气工程及其自动化等相关专业的硕士研究生、博士生、科研人员以及从事新能源变换器、柔性输配电系统设计的工程技术人员。; 使用场景及目标:①掌握双有源桥DAB变换器的基本工作原理及其在高频隔离场合的核心优势;②深入理解三重移相控制策略的设计机理、控制自由度分配及其在效率优化的关键作用;③构建并调试可用于科研论文撰、项目申报或实际系统验证的高保真Simulink仿真模型,支撑理论分析与实验对比。; 阅读建议:建议结合MATLAB/Simulink平台进行动手实践,重点关注主电路拓扑搭建、移相控制模块设计、驱动信号时序配置及ZVS实现条件的仿真观测,推荐通过对比SPS、DPS与TPS三种模式的稳态与动态响应曲线,深入掌握各控制策略的适用边界与优化方向。
【重要提示】本资源设置为0积分下载,若非0积分请勿轻易下载 亲爱的CSDN用户: 首先感谢你点进这个资源页面。我需要提前说明一个重要情况: 本资源原本已设置为“0积分下载”,即作者希望完全免费共享。但CSDN平台有时会根据文件的下载热度、文件大小、用户权限等因素,自动将部分资源的积分调整为非0数值(如1积分、2积分、5积分等)。这是平台系统的自动行为,而非作者本人的设定。 因此,如果你当前看到该资源的下载所需积分不是0(例如显示为1、2、3……),请谨慎决定是否下载。 如果你按照非0积分支付并下载后发现资源内容不符合预期、链接失效,或者实际上该资源本应是免费的,作者无法为此承担积分损失或退还操作。强烈建议:仅在页面显示为0积分时进行下载。 另外,本资源描述并未直接提供具体的下载地址或外部链接,因为它本身是一个通过CSDN官方上传通道提交的文件/内容包。如果你看到描述没有外部网盘地址,这是正常的——资源文件应通过CSDN内置的“下载”按钮获取。若因平台积分显示异常导致你支付了积分,请优先联系CSDN客服咨询积分退还政策,作者没有权限修改平台自动设定的积分值。 感谢你的理解与支持。技术分享本应开放,但受限于平台规则,特此提醒如上。祝学习进步!

34,876

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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