比如我有两张表:
1. 学生个人信息表actif,记录的是学生的年龄、性别什么的。
2. 学籍管理表inscription,学生第一次注册那他就是新生,这个表里有个字段ins_type专门用来记录这个情况,记录为0。同一个学生第二次来注册,那么他就是老生了,记录为1。道理挺简单的,如果是新的插入,只要在插入前,探测一下这个学生是否注册过就知道他是新生老生了。但问题是,inscription里已经有大堆的记录,如何使用sql语句一次性找出和修改之前的学籍注册情况?只要能够实现这个目的,使用辅助表,或者增加字段,或者使用几句SQL分开写什么的都可以。请各位兄弟指教一下呀,非常感谢!!
1. 学生个人信息表actif,记录的是学生的年龄、性别什么的。
2. 学籍管理表inscription,学生第一次注册那他就是新生,这个表里有个字段ins_type专门用来记录这个情况,记录为0。同一个学生第二次来注册,那么他就是老生了,记录为1。道理挺简单的,如果是新的插入,只要在插入前,探测一下这个学生是否注册过就知道他是新生老生了。但问题是,inscription里已经有大堆的记录,如何使用sql语句一次性找出和修改之前的学籍注册情况?只要能够实现这个目的,使用辅助表,或者增加字段,或者使用几句SQL分开写什么的都可以。请各位兄弟指教一下呀,非常感谢!!
解决方案 »
- 请教一条SQL语句
- 想学习一下数据库,大家认为选用哪个好?
- MySQL Adminitrator的登陆问题
- 请教一个分表储存的问题,是分表存储好,还是不分?!
- windows 下如何使用mysqlhotcopy
- Mysql query returned no resultset
- 连接不到mysql服务器
- 在mysql里我用root用户建了个mydb数据库,请问我怎样可以新建一个用户,并且使该用户拥有新数据库mydb的表有类似develop的权限.
- 求救:mysql的备份和还原命令是怎么样的?
- 通过客户端访问服务器查询的数据库大小为什么和通过操作系统查的大小不一样?
- My SQ L 的基础知识
- 数据库查询形成新表
其实和表结构没关系。只要inscription的学生出现两次以上,第一次更新ins_type=0,剩下全部更新为ins_type=1to 新生老生在逻辑处理上有什么不同?
inscription的学生出现两次以上,第一次更新ins_type=0,剩下全部更新为ins_type=1to ACMAIN_CHM
非常感谢,我马上试试。另外,你说mysql免费手册,难道还有收费手册?
我研究过了,你给的两种用法实际上都是insert,然后才是update。这种方法对于我的问题并不适用。简单的说,我就是要简单的update已有的数据。对于每一个学生第一次注册的时候,设置ins_type=0。对于这个学生后面的记录,无论他注册了多少次,都设置ins_type=1,整个过程完全不需要insert。还请继续指教一下,谢谢。
我觉得光是判断新生老生,根本就不要额外的ins_type列,一个查询解决: select (select coun(*) from inscription t1 where t1.学生编码 = t.学生编码) as 新老标识,t.* from actif
设置 ins_type default 0
update inscription set ins_type=1 where ins_type=0 and 学生编号=POST过来的值
select min(id) as pk
from 学籍管理表
group by student_idupdate 学籍管理表 set ins_type=0
where id in (select pk from t1)update 学籍管理表 set ins_type=1
where id not in (select pk from t1)