SQLite新手
我正在尝试使用日期更新表.
像这样的东西:
Update MyTable Set MyCol=GetDate()
Run Code Online (Sandbox Code Playgroud)
什么是正确的语法?
我想更新一个表,表明某些行是其他行的父级,所以我在表中添加了一个"parentid"列.以下查询查找所有父项:
SELECT ca1.id, ca2.id
FROM contactassociations ca1
JOIN contactassociations ca2 ON (ca1.contactid = ca2.contactid)
where ca1.entitytable = 'EMPLOYER' AND
ca2.entitytable = 'CLIENT';
Run Code Online (Sandbox Code Playgroud)
但是当我尝试调整该语法来进行更新时,它不起作用:
UPDATE contactassociations ca1
SET ca1.parentid = ca2.id
JOIN contactassociations ca2 ON (ca1.contactid = ca2.contactid)
WHERE ca1.entitytable = 'EMPLOYER' AND ca2.entitytable = 'CLIENT';
Run Code Online (Sandbox Code Playgroud)
我明白了:
Error starting at line 6 in command:
UPDATE contactassociations ca1
SET ca1.parentid = ca2.id
JOIN contactassociations ca2 ON (ca1.contactid = ca2.contactid)
WHERE ca1.entitytable = 'EMPLOYER' AND ca2.entitytable = 'CLIENT'
Error at Command Line:7 Column:28 …Run Code Online (Sandbox Code Playgroud) 我正在更新我们的数据库,并希望更新另一个表中没有现有项目的行.我可以将这些表连接在一起,但是在分组表时遇到问题需要计算行数
UPDATE dpt
SET dpt.active = 0
FROM DEPARTMENT dpt
LEFT JOIN DOCUMENTS doc on dpt.ID = doc.DepartmentID
GROUP BY dpt.ID
HAVING COUNT(doc.ID) = 0
Run Code Online (Sandbox Code Playgroud)
我该怎么办?
我有这个查询,它有效......
UPDATE `contacts`
SET `calls_to`=`calls_to`+1
WHERE `contact_no` = '0412345678';
Run Code Online (Sandbox Code Playgroud)
我还想做的是为成本字段添加一个值。根据我的理解,这样做的方法是......
UPDATE `contacts`
SET `calls_to` = `calls_to`+1,
`cost_to` = `cost_to`+0.25
WHERE `contact_no`='0412345678';
Run Code Online (Sandbox Code Playgroud)
显然,正如我在这里发布的那样,它并没有像我预期的那样工作。
- 更新 -
按照要求,表结构..
id int(255) auto_increment
contact_owner varchar(255)
contact_no varchar(11)
contact_name varchar(255)
calls_to int(255)
txts_to int(255)
time_talked_to int(255)
cost_to decimal(65,2)
Run Code Online (Sandbox Code Playgroud) 我正在尝试按以下方式编写查询:
UPDATE Table i2
SET value = 0
WHERE EXISTS (SELECT 1 FROM Table i1 WHERE i2.ID = i1.ID+1)
Run Code Online (Sandbox Code Playgroud)
问题是我得到"i2'附近的语法错误." 我猜这是因为它不喜欢给正在更新的表提供昵称,但如果是这样的话,我该如何引用呢?
我有一个SQL字段,如下所示:
FIELD_A
cat
dog
bird
mole
dog
Run Code Online (Sandbox Code Playgroud)
我想要 UPDATE
显然,SQL UPDATE语句一次只允许一个SET条件.
如何编写查询以一次完成上述操作?
我有两个表STR_IndentDetail和PUR_POIndent
STR_IndentDetail:
IndentID ItemID POQty D1 D2 D3 RD
--------- ------- ------ ---- --- --- ---
2 1 NULL 10 20 30 NULL
2 6 NULL 20 40 60 45
Run Code Online (Sandbox Code Playgroud)
PUR_POIndent:
POID IndentID ItemID Quantity D1 D2 D3 RD
------ ---------- ------ ---------- ---- --- --- ---
2 2 1 55 10 20 30 NULL
2 2 6 100 20 40 60 45
Run Code Online (Sandbox Code Playgroud)
我想用PUR_POIndent表数量更新STR_IndentDetail表POQty.我已经根据INNER JOIN和LEFT OUTER编写了两个Update语句.但两个查询仅更新一行,其中列D1,D2,D3和RD中的值.包含具有NULL值的列RD的行未获得UPDATE.如何为此案例编写更新声明.以下是我的两个更新声明.
基于内部联接:
UPDATE STR_IndentDetail
SET
POQty = PUR_POIndent.Quantity
FROM
PUR_POIndent
WHERE
PUR_POIndent.IndentID = STR_IndentDetail.IndentID AND …Run Code Online (Sandbox Code Playgroud) 得到这一点SQL作为更新脚本,我试图添加一个工作回合,以便不能包括要更新的表作为语句中的子句,所以使用子查询,但努力让这个工作.
Essientially我需要更新表1中的vailue,其中包含表2中字段的总和,但只有在其他两个字段匹配几个表并且基于field6时,限制才会应用于update子句.
UPDATE table1 W SET Field1=(SELECT field2 FROM
(SELECT A.id, B.field3, SUM(A.field2) AS field2
FROM table2 A, table3 B, table4 P
WHERE A.id=B.id AND P.field6=B.field6) B ) WHERE W.field6=B.field6
Run Code Online (Sandbox Code Playgroud)
在现实世界的例子中,当橄榄球运动员参加比赛时,选择在橄榄球比赛中承认的点数之和.表2具有结果(包括得分)表3具有团队表和表1和4是相同的要更新的播放器表.
希望这很清楚,有人可以指出我正确的方向.
尝试以下方法:
UPDATE $WSLKEEP W, $WSLFIX A, $WSLFIXPLAY B
SET W.F_CONCEDED=SUM(A.F_AGAINST)
WHERE A.F_ID=B.F_GAMEID
AND B.F_NAME=W.F_NAME"
Run Code Online (Sandbox Code Playgroud)
但现在坚持:组功能的使用无效
亲切的问候
我有以下问题:我有像行
ID CODE NAME .........
1 h1100h1 Cool example1 .........
2 h654441 Another cool1 .........
Run Code Online (Sandbox Code Playgroud)
我想交换它们保留所有旧的主键和约束.当然,我可以通过更新行手动轻松解决此问题.我有点想知道是否有人有这种问题的优秀解决方案,而不是手动执行更新命令.我非常感谢任何建议或建议.
我一直在使用的INSERT语法是这样的
INSERT INTO TableName VALUES (...)
Run Code Online (Sandbox Code Playgroud)
我一直在使用的UPDATE语法是
UPDATE TableName SET ColumnName=Value WHERE ...
Run Code Online (Sandbox Code Playgroud)
所以在我的所有代码中,我必须生成2个字符串,这将产生类似的结果
insertStr = "(27, 'John Brown', 102)";
updateStr = "ID=27, Name='John Brown', ItemID=102";
Run Code Online (Sandbox Code Playgroud)
然后单独使用它们
"UPDATE TableName SET " + updateStr + " WHERE ID=27 " +
"IF @@ROWCOUNT=0 "+
"INSERT INTO TableName VALUES (" + insertStr + ")"
Run Code Online (Sandbox Code Playgroud)
当我使用30列的表格时,它开始困扰我.
我们不能生成只在INSERT和UPDATE上使用的一个字符串吗?
例如.在UPDATE语句上使用insertStr或在INSERT语句上使用updateStr,还是一种全新的方式?
sql ×10
sql-update ×10
sql-server ×4
mysql ×2
constraints ×1
date ×1
insert ×1
ora-00933 ×1
oracle ×1
sqlite ×1
subquery ×1
t-sql ×1