我正试图绕过一个查询而我无法理解它.如果有人给我指针,我将不胜感激.作为我想要实现的一个简单示例,我在数据库中有这些记录
Score|Ranking
-------------
100 |0
200 |0
300 |0
Run Code Online (Sandbox Code Playgroud)
我希望排名字段包含1,2,3根据谁获得最高分,所以结果应该是:
Score|Ranking
-------------
100 |3
200 |2
300 |1
Run Code Online (Sandbox Code Playgroud)
目前,我正在为所有这些记录做下一个循环,但实际上这可能是几千 - 这可能需要永远!有没有人对魔术查询有一个想法,可以一次性做到这一点?
如何使用SQL在单个语句中更新多个记录?:
UPDATE records
SET name='abc' where id=3,
SET name='def' where id=1
Run Code Online (Sandbox Code Playgroud) 我想知道更新记录以检索现有记录是否值得服务器时间,循环检查更改的字段并仅将更改的字段放入更新查询中?(我使用的是MySQL和PHP.)
执行此操作的主要原因是为了更改日志目的而减小更新查询的大小.通常,查询可能有15个字段,但实际上只有2个字段正在更改.此查询也可以用于日志记录,因为它只包含更改的字段,因此更容易解析.
我担心的是检索现有记录所需的时间.
或者有没有办法从MySQL检索它更新的哪些字段?
我需要使用该REPLACE命令替换表的列中的一些字符.
我知道该REPLACE命令需要一个列名,然后是要更改的文本(在下面的例子中,'a'char)和新文本(在下面的例子中,'e'char).
UPDATE my_table SET my_column = REPLACE (my_column,'a','e' );
Run Code Online (Sandbox Code Playgroud)
这样执行这个命令将改变所有的" 一中"出现my_column的列my_table表与" è "字符.
但是,如果我需要REPLACE为每一列执行命令而不仅仅是一个列呢?这可能吗?
谢谢
我有这样的查询:
update table
set status = 1
where status = 2;
Run Code Online (Sandbox Code Playgroud)
但我只想这样做到前400名.我尝试添加'限制0,400'(就像我在查询中一样),但这不起作用.我做了一些搜索,mysql似乎不像sql server那样支持TOP(n)命令.
知道我是怎么做的吗?
编辑:为了将来参考,我使用以下样式进行选择,工作正常:
select *
from table
where ... limit 0, 400;
Run Code Online (Sandbox Code Playgroud)
但是在更新中,无论出于何种原因它都无法使用"0".我会考虑这种不一致和模棱两可的行为,但是哦.
我想更新数据库表中的前400行.伪SQL在下面,我该怎么做?
UPDATE top (400) db.dbo.tbl
SET column1 = 2
WHERE column2 = 1
AND column1 is null
Run Code Online (Sandbox Code Playgroud) 我有一个表,我想用选择结果中存在的ID更新所有行.
我的伪代码:
UPDATE mytable as t
SET t.status = 'PM'
WHERE t.ID EXISTS IN (select ID from ...)
Run Code Online (Sandbox Code Playgroud)
我已经设法做了select语句,现在我想使用select语句的结果来更新表.
我在事务中进行了2次查询:SELECT(包含JOIN子句)和UPDATE.要求所选行中的数据在更新完成之前不会更改,因此我使用FOR UPDATE子句.我的问题是:'for update'是仅适用于从FROM子句中指定的表中选择的部分数据还是来自连接表的数据?我的DBMS是MySql.
我有一张桌子汽车和CarDescriptions
汽车:IDCar(int,PK,autoincrement)carsDesciptions(IDDescription,Header(nvarchar),Content(nvarchar),idCar(int,FK)
在应用程序中,我正在添加汽车并编辑现有汽车.
我的问题:
1.如何保存更改的汽车与数据库中的描述?
我有车的ID,我有ID的描述
类CarDescirption没有像IsChanged这样的任何池,所以
我不想做这样的事情:
如果在表中,则必须更新记录,如果表中不存在则必须插入
我有表pref有列值.该值具有类型文本.我想将id为7的行的值字段值复制到id为1的行的值字段.能否请您帮忙完成此操作.我知道MS SQL,但我是mySQL的新手.
create table pref
(
id int,
value text
)
Run Code Online (Sandbox Code Playgroud) sql-update ×10
sql ×9
mysql ×6
sql-server ×3
c# ×1
changelog ×1
ranking ×1
replace ×1
select ×1
t-sql ×1