我知道这些问题在这些论坛上可能会被问到太多次,但我真的找不到可靠的答案。他们都给出了不同的方法。
无论如何,我有这段代码来更新一行:
$sql = "UPDATE $userName SET P1 = '$p1MON' WHERE day = 'MON1'";
是否可以更新同一查询中的多行?像这样:
$sql = "UPDATE $userName SET P1 = '$p1MON' WHERE day = 'MON1',
UPDATE $userName SET P1 = '$p1TUE' WHERE day = 'TUE1',
UPDATE $userName SET P1 = '$p1WED' WHERE day = 'WED1'";
或者,要在一个查询中更新多行,是否必须共享标识符?
感谢。
编辑:评论中的建议似乎不起作用......
$sql = "UPDATE $userName SET P1 = '$p1MON' WHERE day = 'MON1';
UPDATE $userName SET P1 = '$p1TUE' WHERE day = 'TUE1';
UPDATE $userName SET P1 = '$p1WED' WHERE day = 'WED1'";
答案 0 :(得分:10)
使用case
表达式:
UPDATE $userName
SET P1 = case day
when 'MON1' then '$p1MON'
when 'TUE1' then '$p1TUE'
when 'WED1' then '$p1WED'
end
where day IN ('MON1', 'TUE1', 'WED1')
答案 1 :(得分:0)
根据您的数据库引擎,您可以尝试这样的
$sql = "UPDATE $userName SET P1 = '$p1MON' WHERE day = 'MON1'; UPDATE $userName SET P1 = '$p1TUE' WHERE day = 'TUE1'; UPDATE $userName SET P1 = '$p1WED' WHERE day = 'WED1'"
或
$sql = "UPDATE $userName SET P1 = '$p1MON' WHERE day = 'MON1' go UPDATE $userName SET P1 = '$p1TUE' WHERE day = 'TUE1' go UPDATE $userName SET P1 = '$p1WED' WHERE day = 'WED1'"
使用;或GO(取决于您的数据库)单独的指令,然后执行,然后在一个查询"
答案 2 :(得分:0)
是字段日的唯一关键字段吗?
如果是这样,您可以在重复密钥更新语法上使用。
INSERT INTO $userName(day, P1) VALUES
('MON1', '$p1MON'),
('TUE1', '$p1TUE'),
('WED1', '$p1WED')
ON DUPLICATE KEY UPDATE P1=VALUES(P1)