我在表格中做了一个错误的更新查询.
我忘了在WHERE条款中创建一个id字段.
这样就更新了我的所有行.
如何恢复?
我没有备份....
我有一个SQL问题,这可能是一些基本的,但令我感到困惑.
以下是表'Person'的列名称示例:PersonalID,FirstName,LastName,Car,HairColour,FavDrink,FavFood
假设我输入了一行:
121312,Rayna,Pieterson,BMW123d,Brown,NULL,NULL
现在我想更新此人的值,但仅当新值不为null时,更新:
121312,Rayna,Pieterson,NULL,Blonde,Fanta,NULL
新行必须是:
121312,Rayna,Pieterson,BMW123d,Blonde,Fanta,NULL
所以我想的是:
更新人(PersonalID,名字,姓氏,租车,染发,FavDrink,FavFood)设置汽车= @Car(其中@Car不为空),染发= @HairColour(其中@HairColour ...)...等等.
我唯一担心的是我无法在查询结束时对所有条件进行分组,因为它将要求所有值具有相同的条件.如果@HairColour不是Null,我不能像Update HairColour那样做
我有一个按排名顺序显示的标签表.为确保没有两行可以具有相同的排名,它们的值是唯一的:
create table label (
id_label serial not null,
rank integer not null,
title text not null,
constraint pri primary key (id_label),
constraint unq unique (rank)
)
Run Code Online (Sandbox Code Playgroud)
无论是PostgreSQL还是MySQL,它们都表现出相同的行为.查询可能看起来像select title from label order by rank.假设该表包含:
id_label rank title
1 10 Cow
2 20 Apple
3 45 Horse
4 60 Beer
Run Code Online (Sandbox Code Playgroud)
现在假设我想重新排序两个标签,例如让Apple排在Cow之前.最简单的方法是交换他们的等级值:
update label
set rank = case when rank = 20 then 10 else 20 end
where id_label in (1,2)
Run Code Online (Sandbox Code Playgroud)
不.也不:
update label
set rank = case when rank …Run Code Online (Sandbox Code Playgroud) 两张桌子.
Content (table),
topic_id (primary key),
data (text)
Topics (table),
topic_id (primary key),
content_type (text)
Run Code Online (Sandbox Code Playgroud)
两个表都具有相同的主键数据(topic_id).
我需要使用"禁用"文本更新数据字段(内容表),但仅限于content_type字段(主题表)=文本"rvf"的位置
我可以: SELECT * from topics WHERE content_type = "rvf";
我可以: UPDATE content SET data = ("disabled");
但我怎么能把它们放在一起呢.
在论坛的数据库中,我错误地将主体设置为nvarchar(MAX).当然,有人发布了英国百科全书百科全书.所以现在有一个论坛主题因为这一篇文章而无法加载.我已经确定了帖子并对其进行了删除查询,但由于某种原因,查询只是坐下并旋转.我已经放了几个小时,它只是坐在那里.最终会超时.
我也尝试过编辑帖子的主体,但也可以坐着并挂起.当我坐下来让我的查询运行整个数据库挂起,所以我同时关闭该网站,以防止进一步的请求,而它正在思考.如果我取消我的查询,那么该网站将恢复正常,并且所有不涉及该问题的记录的查询都会非常有效.
其他人遇到过这个问题吗?有没有一种简单的方法来粉碎这个邪恶的记录?
更新:对不起,SQL Server的版本是2008.
这是我正在运行的删除记录的查询:
DELETE FROM [u413].[replies] WHERE replyID=13461
Run Code Online (Sandbox Code Playgroud)
我还尝试删除主题本身,该主题与回复和删除相关回复的主题上的回复和删除有关系.这也很常见.
我想更新表中列的前10个值.我有三列; id,account和accountrank.要获得前10个值,我可以使用以下内容:
SELECT * FROM accountrecords
ORDER BY account DESC
LIMIT 10;
Run Code Online (Sandbox Code Playgroud)
我想要做的是根据的大小将值设置accountrank为一系列.这可以在PostgreSQL中做到吗?1 - 10account
我在带有InnoDB引擎的MySQL中有一个表v_ext:
- id:主键
- 代码:预生成的代码列表(比如1000个代码随机生成)
- user_id:initial NULL
当用户购买商品时,他们会收到代码.我需要更新表以填充user_id列.我有两个选择:
START TRANSACTION;
SELECT id FROM v_ext WHERE user_id IS NULL LIMIT 1 FOR UPDATE; -- return id 54 for ex.
UPDATE v_ext SET user_id=xxx WHERE id=54;
COMMIT;
Run Code Online (Sandbox Code Playgroud)
要么
UPDATE v_ext SET user_id=xxx WHERE user_id IS NULL LIMIT 1;
Run Code Online (Sandbox Code Playgroud)
如果我有数千名用户同时购买,第二种选择是否安全?如果是这样,假设第二个选项对性能更好是否正确,因为它只需要一个查询?
@@IDENTITY返回插入ID的最后一行,我想检索更新的最后一行的ID .
这是我的查询:
UPDATE [Table]
SET Active = 1,
Subscribed = 1,
RenewDate = GETDATE(),
EndDate = DATEADD(mm,1,getdate()),
WHERE SC = @SC
AND Service = @Ser
Run Code Online (Sandbox Code Playgroud)
如何获取此更新行的ID?
该列被调用TableID,我没有在查询中使用它.
我有一个用PHP编写的脚本,它有一行正常工作,可以选择我需要的数据;
$result = mysql_query("SELECT product_name, sku, qty FROM supplier_dropship_items WHERE supplier_id = '3' AND status = '2'", $db_beb);
Run Code Online (Sandbox Code Playgroud)
我正在努力的是一种更新我选择的记录的方法,一旦选中我需要更改,status = '1'以便下次我的脚本运行时它不会在选择中提取相同的数据而只会提取新的项目具有状态2的表.
这是我的工作成果,感谢下面接受的答案的评论;
$result = mysql_query("SELECT id, product_name, sku, qty FROM supplier_dropship_items WHERE supplier_id = '3' AND status = '2' FOR UPDATE", $db_beb);
while($row = mysql_fetch_assoc($result))
{
$sql_table_data[] = $row;
mysql_query("UPDATE supplier_dropship_items SET status=1 WHERE id='".$row['id']."'", $db_beb);
}
Run Code Online (Sandbox Code Playgroud) 我有两张桌子
Tabel1包含2列
Tabel2包含2列
想要将table2中的age列添加到table1(WHERE table1.id = table2.id)
然后table1应该包含3列
sql-update ×10
sql ×7
mysql ×6
postgresql ×2
select ×2
sql-server ×2
alter ×1
sql-delete ×1
sql-limit ×1
sql-order-by ×1
where-clause ×1