+ -
当前位置:首页 → 问答吧 → mysql在同一表中如何比对数据

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

时间:2011-09-29

来源:互联网

条件:相同的账号,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这条数据,然后把请问该如何写?问题在哪里?
SQL code

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 ('基本存款账户','临时机构临时存款账户','非临时机构临时存款账户','预算单位专用存款账户','临时存款账户')


作者: 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 ('基本存款账户','临时机构临时存款账户','非临时机构临时存款账户','预算单位专用存款账户','临时存款账户')

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

作者: c00757341   发布时间: 2011-09-29

没看明白你的意思,不过如果是同一个表,你可以用别名来控制

例如:

select * from table as a left join table as b on a.XX=b.XX

作者: yangxiao_jiang   发布时间: 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)
   
  这样想帮你的人可以直接搭建和你相同的环境,并在给出方案前进行测试,避免文字描述理解上的误差。

 

作者: ACMAIN_CHM   发布时间: 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 ('基本存款账户','临时机构临时存款账户','非临时机构临时存款账户','预算单位专用存款账户','临时存款账户')

作者: WWWWA   发布时间: 2011-09-29

用别名意义不大。主要是账号相同的情况下,用type=1的记录查找type=3的记录,如果没有,则取出这条记录

作者: 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

相关阅读 更多