English 中文(简体)
MySQL:如何做有条件的更新?
原标题:MySQL: How to do a conditional update?
  • 时间:2010-04-04 21:52:43
  •  标签:
  • mysql
  • select

我试图按以下思路编写一份最新声明:

TABLE car: id | owner_id | type | status

业主可以有多辆汽车。

UPDATE car c 
   SET c.type = 1 
     WHERE c.owner_id IN ($ids) 
     AND c.status = [1 IF THIS OWNER HAS A CAR WITH 1, ELSE A CAR WITH 0] // ... ???

婴儿数量相当小(低于50个数值)。

似乎很简单,但我似乎无法接手,因为我可以用一个有独立民主党的选任分局到同一个桌旁。

谁?

增 编

最佳回答

你说,你曾尝试过一个失败的问询,但不幸的是,你没有公布,因此我会猜想:

UPDATE car c 
SET c.type = 1 
WHERE c.owner_id IN ($ids) 
  AND c.status = (SELECT MAX(c2.status) FROM car c2 WHERE c.owner_id = c2.owner_id)

回答你的实际询问是有益的,但现在我只想假设这是你所尝试的。 如果你稍有不同,那么它就没有问题了。 你正确地指出,它失败了,因为你无法在同一个表格中更新和选择。 解决这一错误的一个办法是在另一个选择中总结选择:

UPDATE car c 
SET c.type = 1 
WHERE c.owner_id IN ($ids) 
  AND c.status = (SELECT * FROM
                    (SELECT MAX(c2.status) FROM car c2 WHERE c.owner_id = c2.owner_id)
                  AS T1)

令人惊讶的是,尽管这似乎相当于第一个问题,但这项工作仍将有效。 请注意,最初的询问为什么不工作,是因为这样做没有正确地打上桌子。 这一环绕的骗子使MySQL进入了电线,但你应当认识到,在多用户环境中使用这种电线可能不安全。

问题回答

暂无回答




相关问题
SQL SubQuery getting particular column

I noticed that there were some threads with similar questions, and I did look through them but did not really get a convincing answer. Here s my question: The subquery below returns a Table with 3 ...

please can anyone check this while loop and if condition

<?php $con=mysql_connect("localhost","mts","mts"); if(!con) { die( unable to connect . mysql_error()); } mysql_select_db("mts",$con); /* date_default_timezone_set ("Asia/Calcutta"); $date = ...

php return a specific row from query

Is it possible in php to return a specific row of data from a mysql query? None of the fetch statements that I ve found return a 2 dimensional array to access specific rows. I want to be able to ...

Character Encodings in PHP and MySQL

Our website was developed with a meta tag set to... <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" /> This works fine for M-dashes and special quotes, etc. However, I ...

Pagination Strategies for Complex (slow) Datasets

What are some of the strategies being used for pagination of data sets that involve complex queries? count(*) takes ~1.5 sec so we don t want to hit the DB for every page view. Currently there are ~...

Averaging a total in mySQL

My table looks like person_id | car_id | miles ------------------------------ 1 | 1 | 100 1 | 2 | 200 2 | 3 | 1000 2 | 4 | 500 I need to ...

热门标签