首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >MySQL高级更新查询

MySQL高级更新查询
EN

Stack Overflow用户
提问于 2012-09-06 18:49:37
回答 3查看 390关注 0票数 1

我想设置一张图片作为相册的封面,并从do-while循环中的一个无线输入中选择它。我已经在图片表中放入了一个名为is_cover的字段,如果图像设置为封面,则该字段采用1,否则采用0。

代码语言:javascript
复制
<input type="radio" name="cover" value="<?php echo $row_images['image_id']; ?>" <?php if($row_images['is_cover'] == 1){ echo "checked=\"checked\""; } ?> />

我的问题是,如何执行更新查询,将所有图像的is_cover字段设置为0,并且只有所选图像的值为1。

我想说的是,我怎样才能做到这一点:

代码语言:javascript
复制
$is_cover = $_POST['cover'];
$query = "
    UPDATE images 
    SET is_cover = 1 
    WHERE image_id = {$is_cover} 
          AND SET is_cover = 0 
    WHERE image_id <> {$is_cover}
";
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2012-09-06 18:58:40

这对你来说应该是有用的:

代码语言:javascript
复制
UPDATE images SET is_cover = CASE WHEN image_id = {$is_cover} THEN 1 ELSE 0 END;

在我的测试中:

代码语言:javascript
复制
mysql> select * from first;
+------+-------+
| id   | title |
+------+-------+
|    1 | aaaa  |
|    2 | bbbb  |
|    3 | cccc  |
|    4 | NULL  |
|    6 | ffff  |
+------+-------+
5 rows in set (0.01 sec)

mysql> update first set title = case when id > 4 then 'gggg' else title end;
Query OK, 1 row affected (0.01 sec)
Rows matched: 5  Changed: 1  Warnings: 0

mysql> select * from first;
+------+-------+
| id   | title |
+------+-------+
|    1 | aaaa  |
|    2 | bbbb  |
|    3 | cccc  |
|    4 | NULL  |
|    6 | gggg  |
+------+-------+
5 rows in set (0.00 sec)
票数 5
EN

Stack Overflow用户

发布于 2012-09-06 18:53:11

您可以在此处运行2个查询,其中一个将它们全部设置为0,然后将您选择的查询设置为1

票数 0
EN

Stack Overflow用户

发布于 2012-09-06 18:59:55

执行以下两个查询:

代码语言:javascript
复制
$query = "UPDATE images SET is_cover = 0 WHERE image_id <> {$is_cover}";

$query = "UPDATE images SET is_cover = 1 WHERE image_id = {$is_cover}";

第一个查询将所有is_cover设置为零。第二个查询将所选图像的is_cover设置为1。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12298415

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档