MySQL -ben hogyan lehet a legegyszerűbben eltávoltani a táblából (egyoszlopos) az összes ismétlődést (pl. egy . Csv import után)?
Itt több megoldás is van.
1, ideiglenes tábla létrehozása és egyben másolás is (mert nem lehet ugyanazt a táblát lekérdeztetni és töröltetni)
CREATE TEMPORARY TABLE bad_temp AS SELECT DISTINCT * FROM bad_table
2, A eredeti rossz tábla tartalmának törlése
DELETE FROM bad_table;
3, jó értékek bemásolása
INSERT INTO bad_table(mezők) SELECT (mezők)FROM bad_temp;
Persze lehet,hogy a 2, DROP TABLE bad_table majd 3,CREATE TABLE bad_table AS SELECT * FROM bad_temp is működne..
"mert nem lehet ugyanazt a táblát lekérdeztetni és töröltetni"
??
DELETE FROM table WHERE ... ( SELECT ... FROM table ... )
:)
Én is errort kaptam,amikor ilyesmit próbáltam,azért írtam,de pont amit előbb linkeltem ott van egy másik megoldást is. Még egy subqueryt használ,hogy ne legyen hiba,de ezt most itt nem tudom kipróbálni..
"
For others that find this question looking to delete while using a subquery, I leave you this example for outsmarting MySQL (even if some people seem to think it cannot be done):
DELETE e.*
FROM tableE e
WHERE id IN (SELECT id
FROM tableE
WHERE arg = 1 AND foo = 'bar');
will give you an error:
ERROR 1093 (HY000): You can't specify target table 'e' for update in FROM clause
However this query:
DELETE e.*
FROM tableE e
WHERE id IN (SELECT id
FROM (SELECT id
FROM tableE
WHERE arg = 1 AND foo = 'bar') x);
will work just fine:
"
Kapcsolódó kérdések:
Minden jog fenntartva © 2024, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!