一个考生表,现在要随机生成考号,遇到sql疑问,请教各位大虾
2007-11-13 01:17
531 查看
一个考生表,现在要随机生成考号
表结构如下:
USE [WZ16]
GO
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE TABLE [dbo].[Jwc_Kaosheng](
[KaoshengId] [bigint] IDENTITY(1,1) NOT NULL,
[KaoshiId] [bigint] NOT NULL,
[BanjiStudentId] [bigint] NOT NULL,
[KaoHao] [int] NULL,
[ShiChangNum] [nvarchar](20) COLLATE Chinese_PRC_CI_AS NULL,
[ZuoweiHao] [int] NULL,
[Zongfen] [float] NULL,
[TScore] [float] NULL,
[Dengdi] [nvarchar](10) COLLATE Chinese_PRC_CI_AS NULL,
[ClassMingci] [bigint] NULL,
[ClassMingciAdd] [bigint] NULL,
[SchoolMingci] [bigint] NULL,
[SchoolMingciAdd] [bigint] NULL,
[AllMingci] [bigint] NULL,
[AllMingciAdd] [bigint] NULL,
[Active] [bit] NULL CONSTRAINT [DF_Jwc_Kaosheng_Active] DEFAULT ((1)),
CONSTRAINT [PK__Kaosheng__173876EA] PRIMARY KEY CLUSTERED
(
[KaoshengId] ASC
)WITH (IGNORE_DUP_KEY = OFF) ON [PRIMARY]
) ON [PRIMARY]
GO
EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'考试' ,@level0type=N'SCHEMA', @level0name=N'dbo', @level1type=N'TABLE', @level1name=N'Jwc_Kaosheng', @level2type=N'COLUMN', @level2name=N'KaoshiId'
GO
EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'学生' ,@level0type=N'SCHEMA', @level0name=N'dbo', @level1type=N'TABLE', @level1name=N'Jwc_Kaosheng', @level2type=N'COLUMN', @level2name=N'BanjiStudentId'
GO
EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'考号' ,@level0type=N'SCHEMA', @level0name=N'dbo', @level1type=N'TABLE', @level1name=N'Jwc_Kaosheng', @level2type=N'COLUMN', @level2name=N'KaoHao'
GO
EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'试场号' ,@level0type=N'SCHEMA', @level0name=N'dbo', @level1type=N'TABLE', @level1name=N'Jwc_Kaosheng', @level2type=N'COLUMN', @level2name=N'ShiChangNum'
GO
EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'座位号' ,@level0type=N'SCHEMA', @level0name=N'dbo', @level1type=N'TABLE', @level1name=N'Jwc_Kaosheng', @level2type=N'COLUMN', @level2name=N'ZuoweiHao'
GO
EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'总分' ,@level0type=N'SCHEMA', @level0name=N'dbo', @level1type=N'TABLE', @level1name=N'Jwc_Kaosheng', @level2type=N'COLUMN', @level2name=N'Zongfen'
GO
EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'标准分' ,@level0type=N'SCHEMA', @level0name=N'dbo', @level1type=N'TABLE', @level1name=N'Jwc_Kaosheng', @level2type=N'COLUMN', @level2name=N'TScore'
GO
EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'等第' ,@level0type=N'SCHEMA', @level0name=N'dbo', @level1type=N'TABLE', @level1name=N'Jwc_Kaosheng', @level2type=N'COLUMN', @level2name=N'Dengdi'
GO
EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'班内名次' ,@level0type=N'SCHEMA', @level0name=N'dbo', @level1type=N'TABLE', @level1name=N'Jwc_Kaosheng', @level2type=N'COLUMN', @level2name=N'ClassMingci'
GO
EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'班内进步名次' ,@level0type=N'SCHEMA', @level0name=N'dbo', @level1type=N'TABLE', @level1name=N'Jwc_Kaosheng', @level2type=N'COLUMN', @level2name=N'ClassMingciAdd'
GO
EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'校内名次' ,@level0type=N'SCHEMA', @level0name=N'dbo', @level1type=N'TABLE', @level1name=N'Jwc_Kaosheng', @level2type=N'COLUMN', @level2name=N'SchoolMingci'
GO
EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'校内进步名次' ,@level0type=N'SCHEMA', @level0name=N'dbo', @level1type=N'TABLE', @level1name=N'Jwc_Kaosheng', @level2type=N'COLUMN', @level2name=N'SchoolMingciAdd'
GO
EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'四校名次' ,@level0type=N'SCHEMA', @level0name=N'dbo', @level1type=N'TABLE', @level1name=N'Jwc_Kaosheng', @level2type=N'COLUMN', @level2name=N'AllMingci'
GO
EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'四校进步名次' ,@level0type=N'SCHEMA', @level0name=N'dbo', @level1type=N'TABLE', @level1name=N'Jwc_Kaosheng', @level2type=N'COLUMN', @level2name=N'AllMingciAdd'
GO
EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'参评' ,@level0type=N'SCHEMA', @level0name=N'dbo', @level1type=N'TABLE', @level1name=N'Jwc_Kaosheng', @level2type=N'COLUMN', @level2name=N'Active'
GO
USE [WZ16]
GO
ALTER TABLE [dbo].[Jwc_Kaosheng] WITH CHECK ADD CONSTRAINT [FK_Jwc_Kaosheng_Base_BanjiStudent] FOREIGN KEY([BanjiStudentId])
REFERENCES [dbo].[Base_BanjiStudent] ([BanjiStudentID])
GO
ALTER TABLE [dbo].[Jwc_Kaosheng] WITH CHECK ADD CONSTRAINT [FK_Jwc_Kaosheng_Jwc_Kaoshi] FOREIGN KEY([KaoshiId])
REFERENCES [dbo].[Jwc_Kaoshi] ([KaoshiID])
可以正常运行的SQL:
set ANSI_NULLS ON
set QUOTED_IDENTIFIER ON
go
-- =============================================
-- Author: Name
-- Create date:
-- Description:
-- =============================================
ALTER PROCEDURE [dbo].[RandomKaoHao]
-- Add the parameters for the stored procedure here
@KaoshiId bigint
AS
BEGIN
-- SET NOCOUNT ON added to prevent extra result sets from
-- interfering with SELECT statements.
SET NOCOUNT ON;
-- Insert statements for procedure here
-- declare @KaoshiId bigint
-- set @KaoshiId = 4
;
With VKaosheng as (
select KaoshengId, row_number() over (order by newid() ) as OrderId
from Jwc_Kaosheng where kaoshiId = @KaoshiId
)
update Jwc_Kaosheng
set Jwc_Kaosheng.KaoHao = VKaosheng.OrderId
from Jwc_Kaosheng,VKaosheng
where Jwc_Kaosheng.KaoshengId = VKaosheng.KaoshengId
and Jwc_Kaosheng.kaoshiId = @KaoshiId
-- update Jwc_Kaosheng
-- set Jwc_Kaosheng.KaoHao = (select top 1 OrderId from VKaosheng where Jwc_Kaosheng.KaoshengId = VKaosheng.KaoshengId)
-- where kaoshiId = @KaoshiId
;
--select KaoshengId,KaoHao from Jwc_Kaosheng where kaoshiId = @KaoshiId
END
奇怪处:
下面查询可以正常运行,但做成sp就不行了,考号很多重复。
declare @KaoshiId bigint
set @KaoshiId = 4
;
With VKaosheng as (
select KaoshengId, row_number() over (order by newid() ) as OrderId
from Jwc_Kaosheng where kaoshiId = @KaoshiId
)
-- update Jwc_Kaosheng
-- set Jwc_Kaosheng.KaoHao = VKaosheng.OrderId
-- from Jwc_Kaosheng,VKaosheng
-- where Jwc_Kaosheng.KaoshengId = VKaosheng.KaoshengId
-- and Jwc_Kaosheng.kaoshiId = @KaoshiId
update Jwc_Kaosheng
set Jwc_Kaosheng.KaoHao = (select top 1 OrderId from VKaosheng where Jwc_Kaosheng.KaoshengId = VKaosheng.KaoshengId)
where kaoshiId = @KaoshiId
与上面正常运行的查询,相对就的sp
set ANSI_NULLS ON
set QUOTED_IDENTIFIER ON
go
-- =============================================
-- Author: Name
-- Create date:
-- Description:
-- =============================================
ALTER PROCEDURE [dbo].[RandomKaoHao]
-- Add the parameters for the stored procedure here
@KaoshiId bigint
AS
BEGIN
-- SET NOCOUNT ON added to prevent extra result sets from
-- interfering with SELECT statements.
SET NOCOUNT ON;
-- Insert statements for procedure here
-- declare @KaoshiId bigint
-- set @KaoshiId = 4
;
With VKaosheng as (
select KaoshengId, row_number() over (order by newid() ) as OrderId
from Jwc_Kaosheng where kaoshiId = @KaoshiId
)
-- update Jwc_Kaosheng
-- set Jwc_Kaosheng.KaoHao = VKaosheng.OrderId
-- from Jwc_Kaosheng,VKaosheng
-- where Jwc_Kaosheng.KaoshengId = VKaosheng.KaoshengId
-- and Jwc_Kaosheng.kaoshiId = @KaoshiId
update Jwc_Kaosheng
set Jwc_Kaosheng.KaoHao = (select top 1 OrderId from VKaosheng where Jwc_Kaosheng.KaoshengId = VKaosheng.KaoshengId)
where kaoshiId = @KaoshiId
;
--select KaoshengId,KaoHao from Jwc_Kaosheng where kaoshiId = @KaoshiId
END
为什么,虽然目前已经搞定了错误,但还是不明白原因,有谁知道请赐教。谢谢
表结构如下:
USE [WZ16]
GO
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE TABLE [dbo].[Jwc_Kaosheng](
[KaoshengId] [bigint] IDENTITY(1,1) NOT NULL,
[KaoshiId] [bigint] NOT NULL,
[BanjiStudentId] [bigint] NOT NULL,
[KaoHao] [int] NULL,
[ShiChangNum] [nvarchar](20) COLLATE Chinese_PRC_CI_AS NULL,
[ZuoweiHao] [int] NULL,
[Zongfen] [float] NULL,
[TScore] [float] NULL,
[Dengdi] [nvarchar](10) COLLATE Chinese_PRC_CI_AS NULL,
[ClassMingci] [bigint] NULL,
[ClassMingciAdd] [bigint] NULL,
[SchoolMingci] [bigint] NULL,
[SchoolMingciAdd] [bigint] NULL,
[AllMingci] [bigint] NULL,
[AllMingciAdd] [bigint] NULL,
[Active] [bit] NULL CONSTRAINT [DF_Jwc_Kaosheng_Active] DEFAULT ((1)),
CONSTRAINT [PK__Kaosheng__173876EA] PRIMARY KEY CLUSTERED
(
[KaoshengId] ASC
)WITH (IGNORE_DUP_KEY = OFF) ON [PRIMARY]
) ON [PRIMARY]
GO
EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'考试' ,@level0type=N'SCHEMA', @level0name=N'dbo', @level1type=N'TABLE', @level1name=N'Jwc_Kaosheng', @level2type=N'COLUMN', @level2name=N'KaoshiId'
GO
EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'学生' ,@level0type=N'SCHEMA', @level0name=N'dbo', @level1type=N'TABLE', @level1name=N'Jwc_Kaosheng', @level2type=N'COLUMN', @level2name=N'BanjiStudentId'
GO
EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'考号' ,@level0type=N'SCHEMA', @level0name=N'dbo', @level1type=N'TABLE', @level1name=N'Jwc_Kaosheng', @level2type=N'COLUMN', @level2name=N'KaoHao'
GO
EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'试场号' ,@level0type=N'SCHEMA', @level0name=N'dbo', @level1type=N'TABLE', @level1name=N'Jwc_Kaosheng', @level2type=N'COLUMN', @level2name=N'ShiChangNum'
GO
EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'座位号' ,@level0type=N'SCHEMA', @level0name=N'dbo', @level1type=N'TABLE', @level1name=N'Jwc_Kaosheng', @level2type=N'COLUMN', @level2name=N'ZuoweiHao'
GO
EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'总分' ,@level0type=N'SCHEMA', @level0name=N'dbo', @level1type=N'TABLE', @level1name=N'Jwc_Kaosheng', @level2type=N'COLUMN', @level2name=N'Zongfen'
GO
EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'标准分' ,@level0type=N'SCHEMA', @level0name=N'dbo', @level1type=N'TABLE', @level1name=N'Jwc_Kaosheng', @level2type=N'COLUMN', @level2name=N'TScore'
GO
EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'等第' ,@level0type=N'SCHEMA', @level0name=N'dbo', @level1type=N'TABLE', @level1name=N'Jwc_Kaosheng', @level2type=N'COLUMN', @level2name=N'Dengdi'
GO
EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'班内名次' ,@level0type=N'SCHEMA', @level0name=N'dbo', @level1type=N'TABLE', @level1name=N'Jwc_Kaosheng', @level2type=N'COLUMN', @level2name=N'ClassMingci'
GO
EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'班内进步名次' ,@level0type=N'SCHEMA', @level0name=N'dbo', @level1type=N'TABLE', @level1name=N'Jwc_Kaosheng', @level2type=N'COLUMN', @level2name=N'ClassMingciAdd'
GO
EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'校内名次' ,@level0type=N'SCHEMA', @level0name=N'dbo', @level1type=N'TABLE', @level1name=N'Jwc_Kaosheng', @level2type=N'COLUMN', @level2name=N'SchoolMingci'
GO
EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'校内进步名次' ,@level0type=N'SCHEMA', @level0name=N'dbo', @level1type=N'TABLE', @level1name=N'Jwc_Kaosheng', @level2type=N'COLUMN', @level2name=N'SchoolMingciAdd'
GO
EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'四校名次' ,@level0type=N'SCHEMA', @level0name=N'dbo', @level1type=N'TABLE', @level1name=N'Jwc_Kaosheng', @level2type=N'COLUMN', @level2name=N'AllMingci'
GO
EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'四校进步名次' ,@level0type=N'SCHEMA', @level0name=N'dbo', @level1type=N'TABLE', @level1name=N'Jwc_Kaosheng', @level2type=N'COLUMN', @level2name=N'AllMingciAdd'
GO
EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'参评' ,@level0type=N'SCHEMA', @level0name=N'dbo', @level1type=N'TABLE', @level1name=N'Jwc_Kaosheng', @level2type=N'COLUMN', @level2name=N'Active'
GO
USE [WZ16]
GO
ALTER TABLE [dbo].[Jwc_Kaosheng] WITH CHECK ADD CONSTRAINT [FK_Jwc_Kaosheng_Base_BanjiStudent] FOREIGN KEY([BanjiStudentId])
REFERENCES [dbo].[Base_BanjiStudent] ([BanjiStudentID])
GO
ALTER TABLE [dbo].[Jwc_Kaosheng] WITH CHECK ADD CONSTRAINT [FK_Jwc_Kaosheng_Jwc_Kaoshi] FOREIGN KEY([KaoshiId])
REFERENCES [dbo].[Jwc_Kaoshi] ([KaoshiID])
可以正常运行的SQL:
set ANSI_NULLS ON
set QUOTED_IDENTIFIER ON
go
-- =============================================
-- Author: Name
-- Create date:
-- Description:
-- =============================================
ALTER PROCEDURE [dbo].[RandomKaoHao]
-- Add the parameters for the stored procedure here
@KaoshiId bigint
AS
BEGIN
-- SET NOCOUNT ON added to prevent extra result sets from
-- interfering with SELECT statements.
SET NOCOUNT ON;
-- Insert statements for procedure here
-- declare @KaoshiId bigint
-- set @KaoshiId = 4
;
With VKaosheng as (
select KaoshengId, row_number() over (order by newid() ) as OrderId
from Jwc_Kaosheng where kaoshiId = @KaoshiId
)
update Jwc_Kaosheng
set Jwc_Kaosheng.KaoHao = VKaosheng.OrderId
from Jwc_Kaosheng,VKaosheng
where Jwc_Kaosheng.KaoshengId = VKaosheng.KaoshengId
and Jwc_Kaosheng.kaoshiId = @KaoshiId
-- update Jwc_Kaosheng
-- set Jwc_Kaosheng.KaoHao = (select top 1 OrderId from VKaosheng where Jwc_Kaosheng.KaoshengId = VKaosheng.KaoshengId)
-- where kaoshiId = @KaoshiId
;
--select KaoshengId,KaoHao from Jwc_Kaosheng where kaoshiId = @KaoshiId
END
奇怪处:
下面查询可以正常运行,但做成sp就不行了,考号很多重复。
declare @KaoshiId bigint
set @KaoshiId = 4
;
With VKaosheng as (
select KaoshengId, row_number() over (order by newid() ) as OrderId
from Jwc_Kaosheng where kaoshiId = @KaoshiId
)
-- update Jwc_Kaosheng
-- set Jwc_Kaosheng.KaoHao = VKaosheng.OrderId
-- from Jwc_Kaosheng,VKaosheng
-- where Jwc_Kaosheng.KaoshengId = VKaosheng.KaoshengId
-- and Jwc_Kaosheng.kaoshiId = @KaoshiId
update Jwc_Kaosheng
set Jwc_Kaosheng.KaoHao = (select top 1 OrderId from VKaosheng where Jwc_Kaosheng.KaoshengId = VKaosheng.KaoshengId)
where kaoshiId = @KaoshiId
与上面正常运行的查询,相对就的sp
set ANSI_NULLS ON
set QUOTED_IDENTIFIER ON
go
-- =============================================
-- Author: Name
-- Create date:
-- Description:
-- =============================================
ALTER PROCEDURE [dbo].[RandomKaoHao]
-- Add the parameters for the stored procedure here
@KaoshiId bigint
AS
BEGIN
-- SET NOCOUNT ON added to prevent extra result sets from
-- interfering with SELECT statements.
SET NOCOUNT ON;
-- Insert statements for procedure here
-- declare @KaoshiId bigint
-- set @KaoshiId = 4
;
With VKaosheng as (
select KaoshengId, row_number() over (order by newid() ) as OrderId
from Jwc_Kaosheng where kaoshiId = @KaoshiId
)
-- update Jwc_Kaosheng
-- set Jwc_Kaosheng.KaoHao = VKaosheng.OrderId
-- from Jwc_Kaosheng,VKaosheng
-- where Jwc_Kaosheng.KaoshengId = VKaosheng.KaoshengId
-- and Jwc_Kaosheng.kaoshiId = @KaoshiId
update Jwc_Kaosheng
set Jwc_Kaosheng.KaoHao = (select top 1 OrderId from VKaosheng where Jwc_Kaosheng.KaoshengId = VKaosheng.KaoshengId)
where kaoshiId = @KaoshiId
;
--select KaoshengId,KaoHao from Jwc_Kaosheng where kaoshiId = @KaoshiId
END
为什么,虽然目前已经搞定了错误,但还是不明白原因,有谁知道请赐教。谢谢
相关文章推荐
- 通过一个函数或sql语句,随机生成任意6个字母组成的字符
- 请教各位大虾一个问题:联接错误怎么改啊?
- 请教各位一个关于HtmlControls与JavaScript的疑问
- 一道遇到的面试题: 怎么判断一个随机数生成程序是真随机
- 通过一个函数或sql语句,随机生成任意6个字母组成的字符
- 请教各位大虾一个网络聊天室的错误!
- 很奇怪的一个问题,是关于sql参数化和传where in 参数的迷惑.请大伙给讲讲吧...小弟很迷糊现在.各位园友,拉兄弟一把!!
- Sql随机生成一个汉语名字
- 请教各位大虾JB的一个问题?
- 通过一个函数或sql语句,随机生成任意6个字母组成的字符
- js实现生成一个指定长度为n且随机不重复的数组
- DBCC大全集之(适用版本MS SQLServer 2008 R2)----DBCC DBREINDEX对指定数据库中的表重新生成一个或多个索引
- 我自己遇到的一个随机无重复分配问题实例
- 给朋友写了一个从脚本文件逐行加载执行SQL语句的程序,现在分享给将来需要的朋友们参考
- 请教各位高手一个问题?
- SQLServer使用identity函数生成带有自增列临时表遇到的一个排序问题
- 随机生成一个三维数组,编程求深度的平均值,保存在一个二维数组中。
- 有一个问题想请教各位达人
- [转]T-SQL 生成一个简易的 公历年历 T-SQL 含日期所在月及年的周次
- 一个分页sql语句生成的function