我有4个单元格(A
,B
,C
,D
),如果它们是空的,我需要更新它们,但不是全部都是相同的例如:如果为空A
而不是更新A
- >如果A
已满,则设置为10,而不是检查B
单元格,如果它是空的,则放在那里10,也可以将其分配给其他最后两个单元格C
,{{1如果1个单元格被更新,则不需要更新其他3个单元格,如果所有单元格都已满,则不需要INSERT INTO D
(table
)VALUES(10)。
我做了一次,但这是错误的查询,因为它正在更新所有单元格:
A
希望得到帮助。
更新 看来它在程序中真的是一个逻辑上的麻烦,首先我需要SELECT所有单元格,这个查询将是这样的:
mysql> UPDATE `mytable` SET `A`=10,`B`=10,`C`=10,`D`=10 WHERE `A` IS NULL OR `B` IS NULL OR `C` IS NULL OR `D` IS NULL LIMIT 1;
Query OK, 1 row affected (0.06 sec)
Rows matched: 1 Changed: 1 Warnings: 0
然后再进行下一步。
答案 0 :(得分:1)
您的数据结构似乎特别奇怪:也许替代结构会以更好的方式实现您期望的结果?但是,如果没有关于您尝试建模的问题的进一步信息,您可以使用以下内容执行您提及的更新:
LOCK TABLES mytable WRITE;
INSERT INTO `table` (A) SELECT 10 FROM mytable WHERE
A IS NOT NULL AND B IS NOT NULL AND C IS NOT NULL AND D IS NOT NULL;
UPDATE mytable SET
D = IF(A IS NOT NULL AND B IS NOT NULL AND C IS NOT NULL AND D IS NULL, 10, D),
C = IF(A IS NOT NULL AND B IS NOT NULL AND C IS NULL, 10, C),
B = IF(A IS NOT NULL AND B IS NULL, 10, B),
A = IF(A IS NULL, 10, A);
UNLOCK TABLES;
答案 1 :(得分:0)
您可以执行以下操作:http://dev.mysql.com/doc/refman/5.0/en/insert-on-duplicate.html
INSERT INTO <table>
VALUES (1, 2, 3 ,4)
ON DUPLICATE KEY
UPDATE a=1,b=2,c=3,d=4
但我认为这不符合你的目的。您需要使用PHP或服务器端语言编写逻辑。