我需要使用以下字段更新数据库中的记录
[ID] int (AutoIncr. PK)
[ScorerID] int
[Score] int
[DateCreated] smalldatetime
Run Code Online (Sandbox Code Playgroud)
如果今天的日期存在记录(只应检查日期部分,而不是时间)和给定的记分员,我想更新这个人和今天的分数值.如果得分手今天没有记录,我想创建一个新记录.
我正在试着弄清楚如何将它放入单个(这可能吗?)sql语句中.顺便说一句,我正在使用MSSQl数据库和ExecuteNonQuery()方法来发出查询.
我正在使用Oracle 10g数据库.
我有以下两个表:
T_DEBTOR :
- ID_DEBTOR
- HEADER
T_ELEMENT :
- ID_ELEMENT
- ID_DEBTOR
- INSURER
Run Code Online (Sandbox Code Playgroud)
这两个表使用ID_DEBTOR字段连接.
我想仅在HEADER不为空时才使用关联的T_DEBTOR.HEADER更新T_ELEMENT.INSURER值.换句话说:
If T_DEBTOR.HEADER != null
Then T_ELEMENT.INSURER = T_DEBTOR.HEADER
Else T_ELEMENT.INSURER is not modified!
Run Code Online (Sandbox Code Playgroud)
我尝试使用以下SQL查询:
update
T_ELEMENT elt
set elt.INSURER = (
select HEADER
from T_DEBTOR debtor
where
debtor.HEADER is not null
and debtor.ID_DEBTOR = elt.ID_DEBTOR);
Run Code Online (Sandbox Code Playgroud)
此查询适用于链接到具有HEADER非空的debtors的所有元素.但是,当T_DEBTOR.HEADER为null时,此查询将T_ELEMENT.INSURER设置为null,这是不正确的.
即:
If T_DEBTOR.HEADER != null
Then T_ELEMENT.INSURER = T_DEBTOR.HEADER --> This part is OK
Else T_ELEMENT.INSURER is set to null --> This part is …Run Code Online (Sandbox Code Playgroud) Oracle允许您更新SELECT语句的结果.
UPDATE (<SELECT Statement>)
SET <column_name> = <value>
WHERE <column_name> <condition> <value>;
Run Code Online (Sandbox Code Playgroud)
我想这可以用于根据另一个表中匹配行的值更新一个表中的列.
如何调用此功能,它是否可以有效地用于大型更新,当SELECT连接多个表时是否有效,如果是,如何?
我正在尝试在PHP中创建一个SQL查询来更新表.是否可以WHERE为每个受影响的行设置不同的子句?
例如:
UPDATE table
SET val=X WHERE someproperty = 1,
SET val=Y WHERE someproperty = 2
Run Code Online (Sandbox Code Playgroud)
等等?
任何帮助赞赏.谢谢
我有一个客户表,并希望以循环方式为每个客户分配销售人员.
Customers
--CustomerID
--FName
--SalespersonID
Salesperson
--SalespersonID
--FName
Run Code Online (Sandbox Code Playgroud)
所以,如果我有15个客户和5个销售人员,我希望最终结果看起来像这样:
CustomerID -- FName -- SalespersonID
1 -- A -- 1
2 -- B -- 2
3 -- C -- 3
4 -- D -- 4
5 -- E -- 5
6 -- F -- 1
7 -- G -- 2
8 -- H -- 3
9 -- I -- 4
10 -- J -- 5
11 -- K -- 1
12 -- L -- 2
13 -- M -- 3
14 …Run Code Online (Sandbox Code Playgroud) MySQL-pro的一个简单问题.我有一个表中包含文件名的字段(只是文件名,没有额外的文本).我需要将所有文件扩展名从".png"更改为".jpg",我知道有一种方法可以使用PHP或Java等编程语言进行查询和编写脚本.
为了以防万一,删除"show create table"输出:
CREATE TABLE `photos` (
`id` bigint(20) NOT NULL,
`owner_id` int(11) DEFAULT NULL,
`photo_name` varchar(255) DEFAULT NULL,
`comment` text,
`normal_file_name` varchar(255) DEFAULT NULL,
`thumb_file_name` varchar(255) DEFAULT NULL,
`full_file_name` varchar(255) DEFAULT NULL,
`photo_order` int(11) DEFAULT NULL,
`gallery_file_name` varchar(255) DEFAULT NULL,
`photo_type` varchar(255) DEFAULT NULL,
PRIMARY KEY (`id`),
KEY `FK_photos_OWNER_ID` (`owner_id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 |
Run Code Online (Sandbox Code Playgroud)
normal_file_name,thumb_file_name,gallery_file_name和full_file_name是包含文件路径的字段.
提前感谢您的帮助!
// Juriy
请问如何更新表格哪里有文字?
示例:我有文字"打招呼",我想让这个"彼得说你好" - 我想补充一下彼得的话......
了解?
非常感谢.
我有一个包含记录列表的表,以及一个名为order的列.我有一个AJAX脚本来向上或向下拖放表格行,我想用它来执行查询,在拖动行时对行进行重新排序.
在PHP中,我执行查询以获取记录的当前顺序.例如1,2,3,4 AJAX函数在拖放完成后传递新顺序,例如3,1,2,4
是否有一种简单的方法可以根据新值一次性重新排序记录?我能看到的唯一其他选择是循环遍历UPDATE语句,例如SET order = 1,其中order = 3
但肯定会导致2条记录具有相同的值?
道歉,我知道这种描述可能会有些混乱.
我有这样的SQL
UPDATE A
SET A.TEMSILCI_KOD = 4
FROM S_MUSTERI A, S_TEKLIF B
WHERE A.TEMSILCI_KOD = 9
AND B.BAYI_KOD = 17
AND A.HESAP_NO = B.HESAP_NO
Run Code Online (Sandbox Code Playgroud)
但我得到这样的错误
Error starting at line 8 in command:
UPDATE A
SET A.TEMSILCI_KOD = 4
FROM S_MUSTERI A, S_TEKLIF B
WHERE A.TEMSILCI_KOD = 9
AND B.BAYI_KOD = 17
AND A.HESAP_NO = B.HESAP_NO
Error at Command Line:9 Column:22
Error report:
SQL Error: ORA-00933: SQL command not properly ended
00933. 00000 - "SQL command not properly ended"
*Cause:
*Action: …Run Code Online (Sandbox Code Playgroud) sql ×10
sql-update ×10
oracle ×3
mysql ×2
ajax ×1
bulk ×1
ora-00933 ×1
round-robin ×1
sql-server ×1