Súgó - by - sql (DML), hogyan kell megjeleníteni a lekérdezés összes oszlop egy kivételével, nem felsoroljuk őket

Más szóval, hogyan lehet kizárni egy oszlopot egy ismert nevét az eredménye select * from tábla lekérdezés?

Felsorolni oszlopokat is esik az INSERT utasítás, kivéve a listából auto-növekmény oszlopok vagy oszlopokat szeretne rendelni egy alapértelmezett értéket.

Tegyük fel, hogy azt szeretnénk, hogy válassza ki az összes oszlopot egy tábla kivéve Laptop kódoszlopban. Jelenítse meg az összes oszlopot a táblázatban, csak írj

De ahhoz, hogy kizárják a lista oszlop kódot. van, hogy felsorolni az összes többi oszlop:

Jó lenne, ha tudnánk írni valami ilyesmit

Egy ilyen lehetőség lehetővé tenné számunkra, hogy elkerüljék a házimunka esélyt, hogy hibázik, ha gépelés, és hasznos lenne, ha a dinamikus lekérdezés, ha előre nem ismert semmilyen tábla vagy az oszlopok számát is.

De, sajnos, ilyen lehetőség nincs. De mi is létrehozhatunk egy listát az oszlopok egy kiegészítő forgatókönyvet, hogy továbbra is használják annak eredményeit lekérdezések. Ez tehetünk segítségével szabványos formában metaadatok, melynek neve információk sémája:

NEM állítmány használjuk annak érdekében, hogy képes a jövőben kizárják nem egy, hanem több oszlopot. Most arra van szükség, hogy az eredményt karakterláncot vesszővel elválasztott lista. Ehhez már kell használni rendhagyó módon.

SQL Server

Különösen az SQL Server, meg tudjuk csinálni a segítségével design XML Path. cseréje egyidejűleg a CSERE közötti tér az oszlop nevét vesszővel:

Elvileg tudjuk generálni a szükséges nyilatkozatot teljes egészében a tény, hogy lehet használni, dinamikusan kód:

Abban az esetben, MySQL, fel tudjuk használni egy speciális összesítő függvény GROUP_CONCAT:

Meg kell jegyezni, hogy az információ a MySQL rendszer vonatkozik, hogy nem egy külön adatbázis, és az egész szerver. Ezért, ha a szerver a különböző adatbázisok táblázatok az azonos nevű, a kiválasztási kritériumokat kell hozzá egy állítmány megadásával sémák (adatbázisok): TABLE_SCHEMA = „számítógépek”.

Az összefűzés MySQL történik segítségével CONCAT. Ennek eredményeként, a végső megoldás a problémánkra felírható:

PostgreSQL

A PostgreSQL egy feladatnézetben oszlop értékeit szöveges listaként is megoldható révén két beépített funkciók: tömb és ARRAY_TO_STRING. Az első közülük átalakítja a mintában szereplő értékeket egy tömbben, és a második tömb alakítja a listán. Ebben a második ARRAY_TO_STRING funkció paraméter határozza meg a karakter amelyet elválasztott listáját terméket. Most, a megoldás a problémánkra felírható:

Vegye figyelembe, hogy a normál üzemben „||”, és vegye figyelembe, hogy szükség van az explicit típus adatai COLUMN_NAME oszlop (information_schema.sql_identifier) ​​Char / VARCHAR típusú egybetoldjuk húrok PostgreSQL.


A repedés a szélvédő Mitsubishi Carisma www.remont-skolov.nethouse.ru
remont-skolov.nethouse.ru