求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)

这句话不知道错哪了
...全文
152 16 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
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
  • 打赏
  • 举报
回复
什么错?

34,838

社区成员

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

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