Megosztás:


SELECT (Entity SQL)

A lekérdezés által visszaadott elemeket adja meg.

Szemantika

SELECT [ ALL | DISTINCT ] [ topSubclause ] aliasedExpr
      [{ , aliasedExpr }] FROM fromClause [ WHERE whereClause ] [ GROUP BY groupByClause [ HAVING havingClause ] ] [ ORDER BY orderByClause ]
-- or
SELECT VALUE [ ALL | DISTINCT ] [ topSubclause ] expr FROM fromClause [ WHERE whereClause ] [ GROUP BY groupByClause [ HAVING havingClause ] ] [ ORDER BY orderByClause

Érvek

AZ ALL azt adja meg, hogy az ismétlődések megjelenhetnek az eredményhalmazban. Az ALL az alapértelmezett.

A DISTINCT azt határozza meg, hogy csak egyedi eredmények jelenjenek meg az eredményhalmazban.

ÉRTÉK: Csak egy elem adható meg, és nem adható hozzá sorburkolóhoz.

topSubclause Bármely érvényes kifejezés, amely az űrlap top(expr)lekérdezéséből visszaadandó első eredmények számát jelzi.

Az ORDER BY operátor LIMIT paramétere lehetővé teszi az eredményhalmaz első n elemének kiválasztását is.

aliasedExpr Az űrlap kifejezése:

expr amint identifier | expr

expr Egy literál vagy kifejezés.

Megjegyzések

A SELECT záradék kiértékelése a FROM, a GROUP BY és a HAVING záradék kiértékelése után történik. A SELECT záradék csak a hatókörben lévő elemekre hivatkozhat (a FROM záradékból vagy a külső hatókörökből). Ha a GROUP BY záradék meg van adva, a SELECT záradék csak a GROUP BY kulcsok aliasaira hivatkozhat. A FROM záradékelemekre való hivatkozás csak összesített függvényekben engedélyezett.

A SELECT kulcsszót követő egy vagy több lekérdezési kifejezés listáját select listának, vagy formálisan előrejelzésnek nevezzük. A kivetítés legszabályosabb formája egyetlen lekérdezési kifejezés. Ha kiválaszt egy tagot member1 egy gyűjteményből collection1, egy új gyűjteményt fog létrehozni az member1 egyes objektumok összes értékéből az alábbi példában collection1látható módon.

SELECT collection1.member1 FROM collection1

Ha például egy olyan típusú gyűjtemény, customers amely rendelkezik egy típustulajdonságokkal Namestring, a kiválasztás Namecustomers sztringek gyűjteményét eredményezi, ahogyan az az alábbi példában is látható.Customer

SELECT customers.Name FROM customers AS c

A JOIN szintaxist is használhatja (TELJES, BELSŐ, BAL, KÜLSŐ, BE és JOBBRA). A be van kapcsolva a belső illesztésekhez, és keresztcsatlakozások esetén nto engedélyezett.

Sor- és értékválasztó záradékok

Az Entity SQL a SELECT záradék két változatát támogatja. Az első variánst, a sorválasztást a SELECT kulcsszó azonosítja, és egy vagy több előre vetítendő érték megadására használható. Mivel a visszaadott értékek köré implicit módon sorburkoló kerül, a lekérdezési kifejezés eredménye mindig több sorból áll.

Egy sor minden lekérdezési kifejezésének aliast kell megadnia. Ha nincs megadva alias, az Entity SQL az aliasgenerálási szabályok használatával próbál aliast létrehozni.

A SELECT záradék másik variánsát, a select értéket a SELECT VALUE kulcsszó azonosítja. Csak egy érték megadását teszi lehetővé, és nem ad hozzá sorburkolót.

A sorválasztás mindig kifejezhető a VALUE SELECT értékben, ahogy az az alábbi példában is látható.

SELECT 1 AS a, "abc" AS b FROM C
SELECT VALUE ROW(1 AS a, "abc" AS b) FROM C

Minden és különböző módosító

Az Entity SQL SELECT mindkét változata lehetővé teszi az ALL vagy DISTINCT módosító specifikációját. Ha a DISTINCT módosító meg van adva, a rendszer eltávolítja az ismétlődéseket a lekérdezési kifejezés által létrehozott gyűjteményből (a SELECT záradékig és azokkal együtt). Ha az ALL módosító meg van adva, a rendszer nem végez ismétlődő eltávolítást; Az ALL az alapértelmezett.

Különbségek a Transact-SQL

A Transact-SQL-szel ellentétben az Entity SQL nem támogatja a * argumentum használatát a SELECT záradékban. Ehelyett az Entity SQL lehetővé teszi a lekérdezések számára a teljes rekordok kivetítését a FROM záradék gyűjteményi aliasainak hivatkozásával, ahogyan az az alábbi példában is látható.

SELECT * FROM T1, T2

Az előző Transact-SQL lekérdezési kifejezés az entity SQL-ben a következő módon van kifejezve.

SELECT a1, a2 FROM T1 AS a1, T2 AS a2

példa

Az alábbi Entity SQL-lekérdezés a SELECT operátorral adja meg a lekérdezés által visszaadandó elemeket. A lekérdezés az AdventureWorks értékesítési modellen alapul. A lekérdezés fordításához és futtatásához kövesse az alábbi lépéseket:

  1. Kövesse a How to: Execute a Query that Returns StructuralType Results (Szerkezeti típus eredményeinek visszaadása) című témakör lépéseit.

  2. Adja át a következő lekérdezést argumentumként a ExecuteStructuralTypeQuery metódusnak:

SELECT VALUE product FROM AdventureWorksEntities.Products 
    AS product WHERE product.ListPrice < @price

Lásd még