SELECT ステートメント
SELECT ステートメントは次の基本的な句で構成できます。 このステートメントには、M言語のOdbc.Query 関数を使用してアクセスできます。
- SELECT
- INTO
- FROM
- JOIN
- WHERE
- GROUP BY
- HAVING
- UNION
- ORDER BY
- LIMIT
SELECT 構文
次の構文ダイアグラムは、本製品 のSQL エンジンでサポートされている構文の概要を示します。
SELECT {
[ TOP <numeric_literal> | DISTINCT ]
{
*
| {
<expression> [ [ AS ] <column_reference> ]
| { <table_name> | <correlation_name> } .*
} [ , ... ]
}
{
FROM <table_reference> [ [ AS ] <identifier> ]
} [ , ... ]
[ [
INNER | { { LEFT | RIGHT | FULL } [ OUTER ] }
] JOIN <table_reference> [ ON <search_condition> ] [ [ AS ] <identifier> ]
] [ ... ]
[ WHERE <search_condition> ]
[ GROUP BY <column_reference> [ , ... ]
[ HAVING <search_condition> ]
[ UNION [ ALL ] <select_statement> ]
[
ORDER BY
<column_reference> [ ASC | DESC ] [ NULLS FIRST | NULLS LAST ]
]
[
LIMIT <expression>
[
{ OFFSET | , }
<expression>
]
]
} | SCOPE_IDENTITY()
<expression> ::=
| <column_reference>
| @ <parameter>
| ?
| COUNT( * | { [ DISTINCT ] <expression> } )
| { AVG | MAX | MIN | SUM | COUNT } ( <expression> )
| NULLIF ( <expression> , <expression> )
| COALESCE ( <expression> , ... )
| CASE <expression>
WHEN { <expression> | <search_condition> } THEN { <expression> | NULL } [ ... ]
[ ELSE { <expression> | NULL } ]
END
| {RANK() | DENSE_RANK()} OVER ([PARTITION BY <column_reference>] {ORDER BY <column_reference>})
| <literal>
| <sql_function>
<search_condition> ::=
{
<expression> { = | > | < | >= | <= | <> | != | LIKE | NOT LIKE | IN | NOT IN | IS NULL | IS NOT NULL | AND | OR | CONTAINS | BETWEEN } [ <expression> ]
} [ { AND | OR } ... ]
サンプル
- すべてのカラムを返す:
SELECT * FROM [CData].[Entities].Customers
- カラムをリネームする:
SELECT [CompanyName] AS MY_CompanyName FROM [CData].[Entities].Customers
- カラムのデータを別のデータ型としてキャストする:
SELECT CAST(Balance AS VARCHAR) AS Str_Balance FROM [CData].[Entities].Customers
- データを検索する:
SELECT * FROM [CData].[Entities].Customers WHERE Country = 'US'
- クエリ条件に一致するアイテムの数を返す:
SELECT COUNT(*) AS MyCount FROM [CData].[Entities].Customers
- クエリ条件に一致する一意のアイテムの数を返す:
SELECT COUNT(DISTINCT CompanyName) FROM [CData].[Entities].Customers
- クエリ条件に一致する一意のアイテムを返す:
SELECT DISTINCT CompanyName FROM [CData].[Entities].Customers
- 昇順で結果をソートする:
SELECT City, CompanyName FROM [CData].[Entities].Customers ORDER BY CompanyName ASC
- 指定した行数に結果を制限する:
SELECT City, CompanyName FROM [CData].[Entities].Customers LIMIT 10
- 実行時にインプットに渡すためクエリをパラメータ化する。これにより、prepared statement を作成しSQL インジェクション攻撃を鎮めることができます:
SELECT * FROM [CData].[Entities].Customers WHERE Country = @param
疑似カラム
SELECT ステートメントで入力専用フィールドを使用できます。これらのフィールド(疑似カラム)は、結果には
通常のカラムとして表示されることはありませんが、WHERE 句の一部として指定できます。疑似カラムを使用して、Azure Cosmos DB から追加機能にアクセスできます。
SELECT * FROM [CData].[Entities].Customers WHERE MyPseudocolumn = 'MyValue'
集計関数
集計関数を使用したSELECT の例については集計関数 を参照してください。
JOIN クエリ
JOIN を使用したSELECT クエリの例についてはJOIN クエリ を参照してください。
日付リテラル関数
日付リテラル関数 には、日付リテラル関数を使用したSELECT 例が含まれています。
射影関数
射影関数を使用したSELECT 例については、射影関数 を参照してください。
叙述関数
叙述関数を使用したSELECT 例については、叙述関数 を参照してください。
Window 関数
Window 関数を含むSELECT 例については、Window 関数 を参照してください。
テーブル値関数
テーブル値関数を使用したSELECT 例については、テーブル値関数 を参照してください。