mysql在同一表中如何比对数据

c00757341 2011-09-29 03:19:32
条件:相同的账号,type=1数据有,type=3数据无,且账户性质为“基本存款账户”or“临时机构临时存款账户”or“非临时机构临时存款账户”or“预算单位专用存款账户”or“临时存款账户”。#字符 会通过replaceAll替换。
即在同一个table表里:
...... account字段 type 字段 Property账户性质......
a 1 x
a 3 X
b 1 X
c 1 Y
c 3 Y
想找到b 1这条数据,然后把请问该如何写?问题在哪里?

insert into sysresult
(
`Bank_Name`,
`Bank_code`,
`Account`,
`Account_Name`,
`Account_Property`,
`BankInnerDate`,
`BankRevocationDate`,
`type`,
`ResultType`,
areaId,
resultBankId,
bankId,
optor
)
select
Bank_Name,
Bank_code,
Account,
Account_Name,
Account_Property,
Bank_inner_date ,
RevocationDate,
type,
1 as state,
#areaId as areaId ,
#resultBankId as resultbank,
#bankId as bankId,
#optor as optor
from
#table T
WHERE
type=1
AND T.`Account` not in (SELECT Account FROM #table WHERE type=3)
AND T.`Account_Property` in ('基本存款账户','临时机构临时存款账户','非临时机构临时存款账户','预算单位专用存款账户','临时存款账户')

...全文
179 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
c00757341 2011-09-29
  • 打赏
  • 举报
回复
回3楼
sysresult表就这些字段`Bank_Name`,`Bank_code`,`Account`,`Account_Name`,`Account_Property`,`BankInnerDate`,`BankRevocationDate`,`type`,`ResultType`,areaId,resultBankId,bankId

mysql5.02版本
c00757341 2011-09-29
  • 打赏
  • 举报
回复
用别名意义不大。主要是账号相同的情况下,用type=1的记录查找type=3的记录,如果没有,则取出这条记录
WWWWA 2011-09-29
  • 打赏
  • 举报
回复
select * from sysresult a where type=1 and
not exists(select 1 from sysresult where type=3 and a.`Account`=`Account`)
AND `Account_Property` in ('基本存款账户','临时机构临时存款账户','非临时机构临时存款账户','预算单位专用存款账户','临时存款账户')
ACMAIN_CHM 2011-09-29
  • 打赏
  • 举报
回复
(不要高估你的汉语表达能力或者我的汉语理解能力)
建议你列出你的表结构,并提供测试数据以及基于这些测试数据的所对应正确结果。
参考一下这个贴子的提问方式http://topic.csdn.net/u/20091130/20/8343ee6a-417c-4c2d-9415-fa46604a00cf.html

1. 你的 create table xxx .. 语句
2. 你的 insert into xxx ... 语句
3. 结果是什么样,(并给以简单的算法描述)
4. 你用的数据库名称和版本(经常有人在MS SQL server版问 MySQL)

这样想帮你的人可以直接搭建和你相同的环境,并在给出方案前进行测试,避免文字描述理解上的误差。

yangxiao_jiang 2011-09-29
  • 打赏
  • 举报
回复
没看明白你的意思,不过如果是同一个表,你可以用别名来控制

例如:

select * from table as a left join table as b on a.XX=b.XX
c00757341 2011-09-29
  • 打赏
  • 举报
回复
insert into sysresult(`Bank_Name`,`Bank_code`,`Account`,`Account_Name`,`Account_Property`,`BankInnerDate`,`BankRevocationDate`,`type`,`ResultType`,areaId,resultBankId,bankId) select Bank_Name,Bank_code,Account,Account_Name,Account_Property,Bank_inner_date ,RevocationDate,type,1 as state,#areaId as areaId ,#resultBankId as resultbank,#bankId as bankId from #table WHERE type=1 AND Account not in (SELECT Account FROM #table WHERE type=3) AND Account_Property in ('基本存款账户','临时机构临时存款账户','非临时机构临时存款账户','预算单位专用存款账户','临时存款账户')

另外调整了下,请看下是不是该这样写?暂时没法调试

56,677

社区成员

发帖
与我相关
我的任务
社区描述
MySQL相关内容讨论专区
社区管理员
  • MySQL
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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