导航
  • 主页
  • 基础类
  • 应用实例
  • 新技术前沿

求1条SQL语句 不知道哪出错了

udSoft2020 2007-11-28 09:44:47
SELECT 'A' AS JoinFlag ,A.CODE,B.CODE FROM NameJp AS A
LEFT JOIN (SELECT 'A' AS JoinFlag ,HZ,CODE FROM NameJp) AS B On B.HZ = SUBSTRING('张三',2,1)AND A.JoinFlag=B.JoinFlag
WHERE A.HZ = SUBSTRING('张三',1,1)

这句话不知道错哪了
...全文
106 点赞 收藏 16
写回复
16 条回复
切换为时间正序
请发表友善的回复…
发表回复
rouqu 2007-11-29
还有 你这个连接意义何在?会不会等于做一个笛卡尔乘积?
回复
udSoft2020 2007-11-29
这个连接只是为了生成 汉字姓名的 简拼
回复
rouqu 2007-11-28
SELECT 'A' AS JoinFlag ,A.CODE,B.CODE FROM NameJp AS A
LEFT JOIN (SELECT 'A' AS JoinFlag ,HZ,CODE FROM NameJp) AS B On B.HZ = SUBSTRING('张三',2,1)AND A.JoinFlag=B.JoinFlag
WHERE A.HZ = SUBSTRING('张三',1,1)

-------
去掉条件 简化一下是

select ... from tb1 A left join B on b.x = A.x --问题NameJp中有joinFlag字段吗

回复
中国风 2007-11-28
--JoinFlag这一列是楼主自定义的没有意义
回复
中国风 2007-11-28
select 
[JoinFlag]='A',
A.CODE,
B.CODE
from
NameJp a
left join
NameJp b on 1=1 and B.HZ='三'--改为1=1..
where
A.HZ='张'
回复
-狙击手- 2007-11-28
你那个ON最后一个条件有什么意思?

新生的列
SELECT   'A'   AS   JoinFlag   ,
A.CODE,B.CODE
FROM NameJp AS A
LEFT JOIN
(SELECT 'A' AS JoinFlag ,
HZ,CODE
FROM NameJp) AS B
On B.HZ = SUBSTRING('张三',2,1)
WHERE A.HZ = SUBSTRING('张三',1,1)
回复
stzjzs 2007-11-28
楼主的意思
select CONCAT((select code from NameJp where hz = SUBSTRING('张三',1,1)),(select code from NameJp where hz = SUBSTRING('张三',2,1))) as XXX
回复
udSoft2020 2007-11-28
服务器: 消息 207,级别 16,状态 3,行 1
列名 'JoinFlag' 无效。
服务器: 消息 207,级别 16,状态 1,行 1
列名 'JoinFlag' 无效。
回复
中国风 2007-11-28
执行一下就知道结果............
回复
udSoft2020 2007-11-28
楼上2薪的同学 , 这样不对了
回复
中国风 2007-11-28
楼主的可改写为这样:效率快一点

select
[JoinFlag]='A',
A.CODE,
B.CODE
from
NameJp a
left join
NameJp b on a.JoinFlag=b.JoinFlag and B.HZ='三'
where
A.HZ='张'
回复
dawugui 2007-11-28
--语法没错,就是看不懂这句有啥用?
SELECT 'A' AS JoinFlag , A.CODE , B.CODE
FROM NameJp AS A
LEFT JOIN (SELECT 'A' AS JoinFlag , HZ , CODE FROM NameJp) AS B
On B.HZ = SUBSTRING('张三' , 2 , 1) AND A.JoinFlag = B.JoinFlag
WHERE A.HZ = SUBSTRING('张三',1,1)
回复
udSoft2020 2007-11-28
想写成一个自定义函数
回复
udSoft2020 2007-11-28
NAMEJP 是一张 姓名的简拼表

有2列

CODE 简拼
HZ 汉字


如汉字 张的 简拼是 Z 陈的简拼是 C

我要的SQL 是生成 姓名简拼 的字符串, 比如 张三 返回 ZS
回复
fcuandy 2007-11-28
SELECT 'A' AS JoinFlag,A.CODE,B.CODE
FROM NameJp AS A
LEFT JOIN
(SELECT 'A' AS JoinFlag,HZ,CODE
FROM NameJp
) AS B
On B.HZ = SUBSTRING('张三',2,1)
AND A.JoinFlag=B.JoinFlag
WHERE A.HZ = SUBSTRING('张三',1,1)

语法没有错误,只是不知道你想实现什么. SUBSTRING('张三',2,1)不就是 '三'吗,1,1同理.
回复
pt1314917 2007-11-28
什么错?
回复
发动态
发帖子
MS-SQL Server
创建于2007-09-28

3.2w+

社区成员

MS-SQL Server相关内容讨论专区
申请成为版主
社区公告
暂无公告