0
這是我希望做單獨使用MySQL:(不PHP)如何在MySQL中實現這個?
PHP代碼:
$result=mysql_query("select f2 from t1 where f1=constant limit L");
while($data = mysql_fetch_row($result))
mysql_query("update t2 set f4=f4-1 where f3={$data[0]} limit 1");
如果你不知道PHP:
select f2 from t1 where f1=constant limit L;
for each f2 (from above result) as F:
update t2 set f4=f4-1 where f3=F limit 1;
如何實現這個在MySQL中?
詳情:
可以有第一選擇的輸出重複值,併爲每個重複的,UPDATE語句將被運行。因此,如果在第一次選擇的輸出中值123發生三次,那麼f4將更新爲f4-3,其中f3 = 123。
'L'是表't1'中「f1 =常數」條件滿足的次數;這個數字在被用作限制之前是已知的。
使用限制1,因爲字段'f3'中的值是唯一的。
如果括號內的select語句給出重複的值,那麼將更新每個重複值? – gom
如何告訴MySQL在這裏,對於每個「在哪裏」,它將在t2中只發現一條記錄? (正如我在我的問題中所做的那樣) – gom
@ user1444680如果't2.f3'上有唯一索引,那麼在更新上不需要'LIMIT'子句,因爲每個值只能更新一行。 WHERE ... IN'將忽略子查詢中的重複值,但如果這讓你感覺更好,可以將子查詢更改爲「SELECT DISTINCT」。 (這種改變不會改變查詢的行爲。) – cdhowie