在数据库中,哪三种字段不能作为分组依据
答案:2 悬赏:40 手机版
解决时间 2021-02-05 22:47
- 提问者网友:暮烟疏雨之际
- 2021-02-05 19:35
在数据库中,哪三种字段不能作为分组依据
最佳答案
- 五星知识达人网友:雾月
- 2021-02-05 20:32
CREATE TABLE [#Tmp1] (
[NewID] [int] IDENTITY (1, 1) NOT NULL ,
[ID] [int] NULL ,
[Name] [varchar] (10) COLLATE Chinese_PRC_CI_AS NULL ,
[Grade] [varchar] (20) COLLATE Chinese_PRC_CI_AS NULL ,
) ON [PRIMARY]
CREATE TABLE [#Tmp2] (
[NewID] [int] IDENTITY (1, 1) NOT NULL ,
[ID] [int] NULL ,
[Name] [varchar] (10) COLLATE Chinese_PRC_CI_AS NULL ,
[Grade] [varchar] (20) COLLATE Chinese_PRC_CI_AS NULL ,
) ON [PRIMARY]
DECLARE @Int AS INT
DECLARE @SQL AS VarChar(8000)
SELECt @Int = COUNT(*) FROM 表
SET @Int = @Int / 2
SET @SQL = 'INSERT INTO #Tmp1 (ID, Name, Grade) SELECt TOP ' + CAST(@Int AS VarChar) + ' ID, Name, Grade FROM 表 ORDER BY ID'
EXEC (@SQL)
SET @SQL = 'INSERT INTO #Tmp2 (ID, Name, Grade) SELECt ID, Name, Grade FROM 表 WHERe ID NOT IN (SELECt ID FROM #Tmp1) ORDER BY ID'
EXEC (@SQL)
SELECt @Tmp1.[NewID], #Tmp1.[ID], #Tmp1.[Name], #Tmp1.Grade, #Tmp2.[ID], #Tmp2.[Name], #Tmp2.Grade
FROM #Tmp1 INNER JOIN #Tmp2 ON #Tmp1.[NewID] = #Tmp2.[NewID]
[NewID] [int] IDENTITY (1, 1) NOT NULL ,
[ID] [int] NULL ,
[Name] [varchar] (10) COLLATE Chinese_PRC_CI_AS NULL ,
[Grade] [varchar] (20) COLLATE Chinese_PRC_CI_AS NULL ,
) ON [PRIMARY]
CREATE TABLE [#Tmp2] (
[NewID] [int] IDENTITY (1, 1) NOT NULL ,
[ID] [int] NULL ,
[Name] [varchar] (10) COLLATE Chinese_PRC_CI_AS NULL ,
[Grade] [varchar] (20) COLLATE Chinese_PRC_CI_AS NULL ,
) ON [PRIMARY]
DECLARE @Int AS INT
DECLARE @SQL AS VarChar(8000)
SELECt @Int = COUNT(*) FROM 表
SET @Int = @Int / 2
SET @SQL = 'INSERT INTO #Tmp1 (ID, Name, Grade) SELECt TOP ' + CAST(@Int AS VarChar) + ' ID, Name, Grade FROM 表 ORDER BY ID'
EXEC (@SQL)
SET @SQL = 'INSERT INTO #Tmp2 (ID, Name, Grade) SELECt ID, Name, Grade FROM 表 WHERe ID NOT IN (SELECt ID FROM #Tmp1) ORDER BY ID'
EXEC (@SQL)
SELECt @Tmp1.[NewID], #Tmp1.[ID], #Tmp1.[Name], #Tmp1.Grade, #Tmp2.[ID], #Tmp2.[Name], #Tmp2.Grade
FROM #Tmp1 INNER JOIN #Tmp2 ON #Tmp1.[NewID] = #Tmp2.[NewID]
全部回答
- 1楼网友:持酒劝斜阳
- 2021-02-05 21:44
这个要放点代码。但是这种方式没有必要,其次就放50分,实在少点,回头你看我的回复
是否值50分?
----------------------
第一:如果代码类似如下
columns[int(tc_user.id)]
columns[int(tc_user.name)]
columns[int(tc_user.sex)]
columns[int(tc_user.address)]
如果从持久实体直接获取,虽然有点效率,但是你可以试验一下如下查询:
select * from information_schema.columns where table_name='t_crd'
以上t_crd 是表名,你看到有一列是ordinal_position:
这个是按照数据库设计表的自然序排列,之后你就看到,只要在设计视图中换换位置就改变了这个值。
本身在dba优化里有一项就是数据类型同项归类提速,结果代码过于拘泥,让dba根本不能实施这项工作。这是一方面:
--------------------------------------------------
第二:其次就是使用反射来获悉枚举列名。你可以自己试验一下:还不如最原始的if else快,性能差个几百倍。
--------------------------------------------------
第三:即使元数据析构table,也是类似如下方式,如下是linq上下文生成列的方式,使用的是特性描述,别看原始,这确是大智慧。
[column(storage="_rpno", dbtype="nvarchar(50) not null", canbenull=false)]
public string rpno
{
get
{
return this._rpno;
}
set
{
if ((this._rpno != value))
{
this.onrpnochanging(value);
this.sendpropertychanging();
this._rpno = value;
this.sendpropertychanged("rpno");
this.onrpnochanged();
}
}
}
---------------------
第四:如果你们领导都同意用枚举来映射表,你也没必要修改,顺水推舟吧!
出错你在摆平,也让你出名一把!你自己先提前想好方案!
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯