mysql update kolumna z wartością z innej tabeli
Mam dwa stoły, oba wyglądają jak
id name value
===================
1 Joe 22
2 Derk 30
Muszę skopiować wartość value
z tableA
do tableB
na podstawie nazwy kontrolki w każdej tabeli.
Jakieś wskazówki dla tego UPDATE
Oświadczenia?
6 answers
Oprócz tej odpowiedzi, jeśli trzeba zmienić t1.wartość według t2.wartość dynamicznie można wykonać na przykład:
UPDATE tableB
INNER JOIN tableA ON tableB.name = tableA.name
SET tableB.value = IF(tableA.value > 0, tableA.value, tableB.value)
WHERE tableA.name = 'Joe'
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-05-15 12:35:30
Musisz dołączyć do dwóch tabel:
Na przykład chcesz skopiować wartość name
z tableA do tableB
gdzie mają tę samą ID
UPDATE tableB t1
INNER JOIN tableA t2
ON t1.id = t2.id
SET t1.name = t2.name
WHERE t2.name = 'Joe'
UPDATE 1
UPDATE tableB t1
INNER JOIN tableA t2
ON t1.id = t2.id
SET t1.name = t2.name
UPDATE 2
UPDATE tableB t1
INNER JOIN tableA t2
ON t1.name = t2.name
SET t1.value = t2.value
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-07-29 12:07:28
Druga możliwość to,
UPDATE TableB
SET TableB.value = (
SELECT TableA.value
FROM TableA
WHERE TableA.name = TableB.name
);
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-05-15 12:36:09
Druga opcja jest wykonalna również, jeśli używasz trybu bezpiecznego aktualizowania (i pojawia się błąd wskazujący, że próbowałeś zaktualizować tabelę bez gdzie, który używa kolumny kluczowej), dodając:
UPDATE TableB
SET TableB.value = (
SELECT TableA.value
FROM TableA
WHERE TableA.name = TableB.name
)
**where TableB.id < X**
;
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-03-07 07:39:21
-- Przechowuj dane w tabeli temp Select * into tempTable from table1
-- now Update the column Aktualizacja tabely1 Ustaw tabelę 1.FileName = (select FileName from where tempTable.id = table1.ID);
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-05-15 14:12:42
Jeśli masz wspólne pole w obu tabelach, to jest to takie proste !....
Table-1 = Tabela, w której chcesz zaktualizować. Table - 2 = Tabela, w której pobierasz dane.
- wykonaj zapytanie w Table - 1 i znajdź wspólną wartość pola.
- wykonaj pętlę i znajdź wszystkie dane z tabeli-2 zgodnie z wartością tabeli 1.
- ponownie wykonaj zapytanie aktualizacyjne w tabeli 1.
$qry_asseet_list = mysql_query("SELECT 'primary key field' FROM `table-1`");
$resultArray = array();
while ($row = mysql_fetch_array($qry_asseet_list)) {
$resultArray[] = $row;
}
foreach($resultArray as $rec) {
$a = $rec['primary key field'];
$cuttable_qry = mysql_query("SELECT * FROM `Table-2` WHERE `key field name` = $a");
$cuttable = mysql_fetch_assoc($cuttable_qry);
echo $x= $cuttable['Table-2 field']; echo " ! ";
echo $y= $cuttable['Table-2 field'];echo " ! ";
echo $z= $cuttable['Table-2 field'];echo " ! ";
$k = mysql_query("UPDATE `Table-1` SET `summary_style` = '$x', `summary_color` = '$y', `summary_customer` = '$z' WHERE `summary_laysheet_number` = $a;");
if ($k) {
echo "done";
} else {
echo mysql_error();
}
}
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-01-22 18:06:19