我有一个带有“SortID”列的表,该列使用连续数字进行编号。每当删除一行时,就会留下一个空白。有没有办法使用纯 SQL 用行号更新行?像这样的东西:
UPDATE tbl SET SortID={rowindex} ORDER BY SortID
Run Code Online (Sandbox Code Playgroud)
(我意识到这不是有效的 SQL,这就是我寻求帮助的原因)
这应该将第一行设置为#1,第二行设置为#2...等等。这可以使用 SQL 吗?请原谅措辞不佳的问题,我不确定问这个问题的最佳方式。:)
我有 update 和 alter 语句,它们仅在将它们放入自己的批处理中时才运行。下面是我的精简版。
DROP TABLE #tmpImportData
USE database_name
GO
DECLARE @localVar VARCHAR(MAX) = 'data'
DECLARE @localVar VARCHAR(MAX) = 'data'
DECLARE @localVar VARCHAR(MAX) = 'data'
DECLARE @localVar int = 1
--Etc...
DECLARE @localVar INT
DECLARE @localVarVARCHAR(50)
DECLARE @localVar AS BINARY (16)
---Etc...
CREATE TABLE #tmpImportData (GuideFirstName VARCHAR(MAX), GuideLastName VARCHAR(MAX),
email VARCHAR(MAX), group_id_text VARCHAR(MAX), CandidateName VARCHAR(MAX),
grade_text VARCHAR(5), dateofbirth DATETIME
)
SET @sql = 'BULK INSERT #tmpImportData FROM '''+@fileName+''' WITH (FIELDTERMINATOR ='';'', ROWTERMINATOR = ''\n'', FIRSTROW = 1)'
EXEC (@sql) …Run Code Online (Sandbox Code Playgroud) 我在 SQL Server 2012 中通过更新查询得到“意外”结果。这就是我想要做的。
从由ID ','name(例如258967,Sarah Jones )组成的列(IDENTIFIER)中,我必须填写其他两列:ID和SELLER_NAME。
原始列有一些值,末尾有一个空白,其余的没有它:
'258967,Sarah Jones'
'98745,Richard James '
Run Code Online (Sandbox Code Playgroud)
这是我正在执行的更新查询:
UPDATE SELLER
SET
IDENTIFIER = LTRIM(RTRIM(IDENTIFIER)),
ID = Left(IDENTIFIER , charindex(',', IDENTIFIER )-1),
SELLER_NAME = UPPER(RIGHT((IDENTIFIER ),LEN(IDENTIFIER )-CHARINDEX(',',IDENTIFIER )));
Run Code Online (Sandbox Code Playgroud)
但我最后得到了错误的结果
258967,Sarah Jones 258967 SARAH JONES
98745,Richard James 98745 ICHARD JAMES
Run Code Online (Sandbox Code Playgroud)
所有末尾有空格的名称都会发生同样的情况。此时我想知道,如果我已经指定我要在第一个操作中消除 IDENTIFIER 值开头和结尾的所有空格,为什么系统会更新 ID 和 SELLER_NAMES 然后执行此操作?。
只是要指定: IDENTIFIER 列是卖方表的一部分,该表正在从另一个人那里更新,该人从 Excel 文件中导入数据。我收到这个值,我必须规范化信息。我只能阅读 SELLER 表,在回答之前考虑到这一点
onupdateDjango 的模型字段有参数吗?
例如,在带有 SQLAlchemy 的 Flask 中,可以使用onupdate=...数据库模式的参数执行以下操作db.Column():
import datetime
from flask import Flask
from flask_sqlalchemy import SQLAlchemy
app = Flask(__name__)
app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:////tmp/test.db'
db = SQLAlchemy(app)
class User(db.Model):
id = db.Column(db.Integer, primary_key=True)
created_on = db.Column(db.Text, default=datetime.datetime.utcnow().isoformat())
updated_on = db.Column(db.Text, default=datetime.datetime.utcnow().isoformat(),
onupdate=datetime.datetime.utcnow().isoformat())
Run Code Online (Sandbox Code Playgroud)
从文档中,有一个auto_now参数,与onupdate=...SQLAlchemy 中的参数相同db.Column()
我已经尝试使用以下模型对象来模拟上面的 Flask 代码,但是如何onupdate=...在 Django 中获得相同的“效果”?
from django.db import models
from django.utils.timezone import now
class User(models.Model):
id = models.IntegerField()
created_on = models.DateTimeField(default=now)
updated_on = …Run Code Online (Sandbox Code Playgroud) 我正在尝试使用 table2 中的 column2 中的值更新 table1 中的 column1 和 table2 中的条件。这很令人困惑,所以这是我的 SQL 代码,也许你明白我的意思......
Private Sub Button_Click()
Dim strSQL As String
strSQL = "UPDATE table1 SET column1 = table2.column2 WHERE table2.ID = 1"
CurrentDb.Execute strSQL
End Sub
Run Code Online (Sandbox Code Playgroud)
此代码未按预期工作,因此我需要您的帮助...
提前致谢!
我的查询中有语法错误:
UPDATE users SET name=IF(name='', 'mario', CONCAT(name, ',mario') WHERE id=1
Run Code Online (Sandbox Code Playgroud)
有人可以帮助我吗?
这个问题很简单,但是我通过搜索“UPDATE JOIN INSERT”和其他类似的东西没有找到答案。
我需要对两个表('main' 和 'sub')进行更新,而一个数据集可能不存在。那么应该有一个简单的 INSERT 之前执行...在一个语句中。
“主要”始终存在。
“子”没有。
我梦幻般的 SQL 解决方案是这样的:
UPDATE main LEFT JOIN sub on main.primary=sub.primary
SET main.foo='bar', sub.foo2='bar2'
CASE sub.primary IS NULL {INSERT INTO sub SET sub.primary=main.primary};
Run Code Online (Sandbox Code Playgroud)
'CASE'-part 是自由泳的,大概是行不通的。但正确的做法是什么?
它绝对必须是“UPDATE [...] LEFT JOIN [...] SET a=aVal, b=bVal, [...]” - 语句。
它必须可扩展至最多 5 个 LEFT JOIN 表,并且无需“SET(..) VALUES(..)”
有没有可能的解决方案?
我有两张桌子。用户 1:
UserID HolidayCity ValidFrom ValidTo
1 NULL '1900-01-01' '2017-05-09'
1 NULL '2017-05-09' NULL
2 NULL '1900-01-01' '2017-05-09'
2 NULL '2017-05-09' NULL
Run Code Online (Sandbox Code Playgroud)
用户2:
UserID CityID
1 33
2 55
Run Code Online (Sandbox Code Playgroud)
我需要使用每个 UserID 的第二个表中 CityID 列中的值更新第一个表中的 HolidayCity 列,但只有那些ValidTo 为 NULL 的记录,以便结果表 Users1 将是:
UserID HolidayCity ValidFrom ValidTo
1 NULL '1900-01-01' '2017-05-09'
1 33 '2017-05-09' NULL
2 NULL '1900-01-01' '2017-05-09'
2 55 '2017-05-09' NULL
Run Code Online (Sandbox Code Playgroud)
你能告诉我怎么做吗?
我在列上使用了更新语句,现在我想反转它。有没有办法撤销这个?
这是原始数据
Name Score
John 15
John 15
Run Code Online (Sandbox Code Playgroud)
我使用了这个查询:
UPDATE T1
SET [score] = [score]+'na'
WHERE (name = ‘john’)
Run Code Online (Sandbox Code Playgroud)
这给了我这个:
Name Score
John 15na
John 15na
Run Code Online (Sandbox Code Playgroud)
我可以撤消此操作并删除na吗?我希望分数是浮动的。
itemTable如果iid相关表上存在匹配的行,我正在尝试更新 a 上的列。
itemMeta是一个 NoSQL 风格的表,表上iid每一项都有重复的s,itemTable是一个关系表。
update itemTable it
set hasAttributes = (select
case when select count(1) from itemMeta where (im.iid = it.iid)
then 'Y'
else 'N' end)
from itemMeta im
where (im.iid = it.iid)
Run Code Online (Sandbox Code Playgroud)
如何将列设置为Y上itemTable,如果有匹配的行iid上存在itemMeta?