我有以下查詢提取:更新MySQL的行與價值從另一個計數表
SELECT int_intrebari.id, COUNT(id_raspuns) AS nr_raspunsuri
FROM int_intrebari, int_raspunsuri
WHERE int_intrebari.id = int_raspunsuri.id
GROUP BY id
是否可以更新第一表從查詢nr_raspunsuri,而無需編寫foreach語句?
我有以下查詢提取:更新MySQL的行與價值從另一個計數表
SELECT int_intrebari.id, COUNT(id_raspuns) AS nr_raspunsuri
FROM int_intrebari, int_raspunsuri
WHERE int_intrebari.id = int_raspunsuri.id
GROUP BY id
是否可以更新第一表從查詢nr_raspunsuri,而無需編寫foreach語句?
您可以用UPDATE
像JOIN
如此:
UPDATE int_intrebari i1
INNER JOIN
(
SELECT id, COUNT(id_raspuns) AS nr_raspunsuri
FROM int_intrebari
GROUP BY id
) i2 ON i1.id = i2.id
SET i1.nr_raspunsuri = i2.nr_raspunsuri
您能否提供確認這是有效語法的鏈接?因爲[MySQL手冊](http://dev.mysql.com/doc/refman/5.0/en/update.html)表明這種語法應該會導致錯誤。 – Vyktor
@Vyktor這是正確的語法。看看[這個SQLFiddle](http://sqlfiddle.com/#!2/a426a7/1) – hims056
@Vyktor - 手冊中的'UPDATE'語法表明表引用直接在'UPDATE'子句後面'UPDATE [LOW_PRIORITY] [IGNORE] table_reference ...',所以它應該是'UPDATE nt_intrebari i1 INNER JOIN ...''其中'nt_intrebari i1 INNER JOIN ...'是表引用。這我如何理解它。 –
UPDATE
(SELECT int_intrebari.id, COUNT(id_raspuns) AS nr_raspunsuri
FROM int_intrebari, int_raspunsuri
WHERE int_intrebari.id = int_raspunsuri.id
GROUP BY id) t1,
int_raspunsuri t2
SET
t2.nr_raspunsuri=t1.nr_raspunsuri
WHERE
t1.id=t2.id
我不明白這將是一個艱難的時刻,因爲默認情況下,mysql對所有關鍵字都是不區分大小寫的 – AnandPhadke
你可以不喜歡它 -
update int_intrebari left join int_raspunsuri on int_intrebari.id =int_raspunsuri.id
set int_intrebari.column_to_update = int_raspunsuri.column_from_update_second_table
你要哪列更新? – Passerby
int_intrebari我想更新選擇的計數。 –