kzen.dev
  • Otázky
  • Značky
  • Používatelia
Oznámenia
Odmeny
Registrácia
Po registrácii budete informovaní o odpovediach a komentároch na vaše otázky.
Prihlásiť sa
Ak už máte konto, prihláste sa a skontrolujte nové oznámenia.
Za pridané otázky, odpovede a komentáre budú udelené odmeny.
Viac na
Zdroj
Upraviť
John M
John M
Question

MySQL - UPDATE dotaz na základe SELECT dotazu

Potrebujem skontrolovať (z tej istej tabuľky), či existuje asociácia medzi dvoma udalosťami na základe dátumu a času.

Jeden súbor údajov bude obsahovať čas ukončenia určitých udalostí a druhý súbor údajov bude obsahovať čas začiatku iných udalostí.

Ak sa prvá udalosť skončí pred druhou udalosťou, potom by som ich chcel prepojiť.

Zatiaľ mám k dispozícii tieto údaje:

SELECT name as name_A, date-time as end_DTS, id as id_A 
FROM tableA WHERE criteria = 1

SELECT name as name_B, date-time as start_DTS, id as id_B 
FROM tableA WHERE criteria = 2

Potom sa k nim pripojím:

SELECT name_A, name_B, id_A, id_B, 
if(start_DTS > end_DTS,'VALID','') as validation_check
FROM tableA
LEFT JOIN tableB ON name_A = name_B

Môžem potom na základe môjho poľa validation_check spustiť dotaz UPDATE s vnoreným SELECT?

461 2009-08-11T20:39:40+00:00 3
 dreftymac
dreftymac
Edited question 6 jún 2019 в 2:30
Programovanie
mysql
sql-update
select
This question has 1 odpoveď in English, to read them log in to your account.
Solution / Answer
 Eric
Eric
11 august 2009 в 8:53
2009-08-11T20:53:47+00:00
Viac na
Zdroj
Upraviť
#9360176

V skutočnosti to môžete urobiť dvoma spôsobmi:

MySQL update join syntax:

UPDATE tableA a
INNER JOIN tableB b ON a.name_a = b.name_b
SET validation_check = if(start_dts > end_dts, 'VALID', '')
-- where clause can go here

ANSI SQL syntax:

UPDATE tableA SET validation_check = 
    (SELECT if(start_DTS > end_DTS, 'VALID', '') AS validation_check
        FROM tableA
        INNER JOIN tableB ON name_A = name_B
        WHERE id_A = tableA.id_A)

Vyberte si tú, ktorá sa vám zdá najprirodzenejšia.

Valerian Pereira
Valerian Pereira
Edited answer 26 november 2018 в 12:51
758
0
Artificial intelligence to parse product page
productapi.dev
 massquote
massquote
12 december 2012 в 9:03
2012-12-12T09:03:42+00:00
Viac na
Zdroj
Upraviť
#9360178
UPDATE
    `table1` AS `dest`,
    (
        SELECT
            *
        FROM
            `table2`
        WHERE
            `id` = x
    ) AS `src`
SET
    `dest`.`col1` = `src`.`col1`
WHERE
    `dest`.`id` = x
;

Dúfam, že vám to bude fungovať.

 automatix
automatix
Edited answer 20 júl 2018 в 9:53
278
0
Artificial intelligence to parse product page
productapi.dev
 KMX
KMX
29 apríl 2012 в 10:11
2012-04-29T10:11:55+00:00
Viac na
Zdroj
Upraviť
#9360177

Ak sa niekto snaží aktualizovať údaje z jednej databázy do druhej bez ohľadu na to, na ktorú tabuľku sa zameriava, musia na to existovať nejaké kritériá.

Toto je lepšie a prehľadnejšie pre všetky úrovne:

UPDATE dbname1.content targetTable

LEFT JOIN dbname2.someothertable sourceTable ON
    targetTable.compare_field= sourceTable.compare_field
SET
    targetTable.col1  = sourceTable.cola,
    targetTable.col2 = sourceTable.colb, 
    targetTable.col3 = sourceTable.colc, 
    targetTable.col4 = sourceTable.cold 

Traaa! Funguje to skvele!

S vyššie uvedeným porozumením môžete upraviť nastavené polia a "on" kritériá na vykonanie vašej práce. Môžete tiež vykonať kontroly, potom vytiahnuť údaje do dočasnej tabuľky (tabuliek) a potom spustiť aktualizáciu pomocou vyššie uvedenej syntaxe, pričom nahradíte názvy tabuliek a stĺpcov.

Dúfam, že to funguje, ak nie, dajte mi vedieť. Napíšem vám presný dotaz.

Valerian Pereira
Valerian Pereira
Edited answer 25 november 2018 в 4:29
56
0
Pridať otázku
Kategórie
Všetky
Technológia
Kultúra / Rekreácia
Život / Umenie
Veda
Profesionálne
Obchod
Používatelia
Všetky
New
Popular
1
Анна Литвиненко
Registered pred dňom
2
Inessa bu
Registered pred mesiacom
3
Denis Babushkin
Registered pred mesiacom
4
asakuno asakuno
Registered pred mesiacom
5
aldo salerno
Registered pred mesiacom
Artificial intelligence to parse product page
productapi.dev
DE
EL
ES
FR
ID
IT
JA
KO
NL
NO
PT
RO
RU
SK
TR
ZH
© kzen.dev 2023
Zdroj
stackoverflow.com
na základe licencie cc by-sa 3.0 s uvedením autora