小编psa*_*sam的帖子

获取数据库中所有主键的列表

这是获取数据库中所有主键列表的最佳方法 - 还是有更好的方法?

SELECT
KCU.TABLE_NAME AS Table_Name,
KCU.CONSTRAINT_NAME AS Constraint_Name,
KCU.COLUMN_NAME AS COLUMN_NAME
FROM
INFORMATION_SCHEMA.TABLE_CONSTRAINTS TC
JOIN INFORMATION_SCHEMA.KEY_COLUMN_USAGE KCU
ON KCU.CONSTRAINT_SCHEMA = TC.CONSTRAINT_SCHEMA
AND KCU.CONSTRAINT_NAME = TC.CONSTRAINT_NAME
AND KCU.TABLE_SCHEMA = TC.TABLE_SCHEMA
AND KCU.TABLE_NAME = TC.TABLE_NAME
WHERE
TC.CONSTRAINT_TYPE = 'PRIMARY KEY'
ORDER BY
KCU.TABLE_SCHEMA, KCU.TABLE_NAME, KCU.CONSTRAINT_NAME
Run Code Online (Sandbox Code Playgroud)

database sql-server primary-key sql-server-2008

14
推荐指数
4
解决办法
5万
查看次数

根据匹配的列更新另一个表的列中的列

以下查询正在更新所有(80k)记录而不是匹配(5k)的记录.有什么问题,如何纠正?

update ALAM set ALAM.CDate = (select IDCP.CDate from IDCP 
                              where ALAM.ASID = IDCP.ASID and ALAM.AID = IDCP.AID 
                                    and ALAM.MCode = '10001')
Run Code Online (Sandbox Code Playgroud)

ALAM记录计数表=约80,000条记录IDCP记录计数表=约5,000条记录

作为附加信息:

select ALAM.ASID, ALAM.AID, ALAM.CDate 
from ALAM, IDCP 
where ALAM.ASID = IDCP.ASID and ALAM.AID = IDCP.AID and ALAM.MCode = '10001' 
Run Code Online (Sandbox Code Playgroud)

结果5000条记录约

sql sql-server join sql-update

3
推荐指数
1
解决办法
1万
查看次数

更短的查询方法

源表和目标表都有大约40列.要更新的行数约为20.目标表的行数约为30k.

下面有更好的(更短的查询)方法吗?

UPDATE destination_table t1
SET 
field1 = (select field1 from src_table t2 where t2.pk = t1.pk),
field2 = (select field2 from src_table t2 where t2.pk = t1.pk),
... 
field40 = (select field40 from src_table t2 where t2.pk = t1.pk),
WHERE EXISTS (select 1 from src_table t2 where t2.pk = t1.pk)
Run Code Online (Sandbox Code Playgroud)

sql t-sql sql-server-2008

2
推荐指数
1
解决办法
69
查看次数

有什么方法可以将SQL表中的数据从行列转换为列行?

有什么方法可以将SQL表中的数据从行列转换为列行?

还允许过滤器/在初始查询中应用条件的位置.

使用SQL Server 2008.

现有表具有以下列:AID(nvarchar唯一)ASID(nvarchar唯一)里程碑(M1,M2,M3 ... M100)MilestoneDate(datetime)

转置数据如下:AID,ASID,M1日期,M2日期,M3日期,M5日期

sql t-sql transpose pivot sql-server-2008

0
推荐指数
1
解决办法
7458
查看次数