在VB.net代码中,我使用SQL参数创建请求.我将DateTime参数设置为DateTime.Now值,我的请求会是什么样的?
UPDATE table SET date = "2010/12/20 10:25:00";
Run Code Online (Sandbox Code Playgroud)
要么
UPDATE table SET date = GETDATE();
Run Code Online (Sandbox Code Playgroud)
在第一种情况下,我确信每条记录都将设置为完全相同的时间.在第二种情况下,它取决于DBMS如何处理请求.这引出了我的第二个问题:SQL Server在使用NOW()更新大表时是否设置了相同的日期和时间?
编辑:由GETDATE()替换NOW()(在SQL Server中不存在).
我知道两种方法将数据插入表中
方法1:显式值
INSERT INTO table
('field1', 'field2', 'field3')
VALUES ('value1', 'value2', 'value3')
Run Code Online (Sandbox Code Playgroud)
方法2:从另一个表复制数据
INSERT INTO table
SELECT 'field1', 'field2', 'field3'
FROM otherTable
Run Code Online (Sandbox Code Playgroud)
两者都只有在所有字段以相同方式填充时才起作用.我需要在同一行中插入显式值和复制数据的混合.这可能吗?
我必须在树枝中"删除"文件夹(已将标记为已删除,我更改了标记的值).每个文件夹都可以包含文件或文件夹(存储在不同的表中).我有一个CTE,它定义了所有需要更新的文件夹.
WITH arbre(id) AS(
SELECT idDossier
FROM portail_managers_dossier
WHERE idDossier = @id
UNION ALL
SELECT d.idDossier
FROM portail_managers_dossier AS d
INNER JOIN arbre AS a
ON a.id = d.idParent)
Run Code Online (Sandbox Code Playgroud)
然后我有两个UPDATE请求,每个表一个
UPDATE portail_managers_dossier
SET dtDateSuppr = NULL
WHERE idDossier IN (SELECT id FROM arbre);
UPDATE portail_managers_document
SET dtDateSuppr = NULL
WHERE idDossier IN (SELECT id FROM arbre);
Run Code Online (Sandbox Code Playgroud)
我的问题是:我不知道如何在不同的表上合并两个UPDATE请求.CTE仅存在于请求结束之前,因此我必须将其定义两次.有没有办法在单个请求中编写上述所有代码?
我正在尝试以非字母数字顺序排序查询结果.例如,如果列的可能值为"1","2"和"3".ORDER BY asc将首先显示带'1'的行,然后显示带'2'的行,最后显示带'3'的行.ORDER BY desc会做对手.
如果我想要一个不同的订单,例如3,1,2或1,3,2,该怎么办?那可能吗 ?
谢谢