SQL Server
 Computer >> コンピューター >  >> プログラミング >> SQL Server

SQLServerのINTERSECT演算子

SQL Server(Transact-SQL)では、INTERSECT演算子を使用して、データセットまたはSELECTステートメントの両方のレコードを返します。レコードが一方のクエリでのみ使用可能で、もう一方のクエリでは使用できない場合、そのレコードはINTERSECTの結果セットから削除されます。

INTERSECTクエリ

SQLServerのINTERSECT演算子
INTERSECTクエリから返された結果を示します

説明: INTERSECTクエリは、青い塗りつぶし領域にあるレコードを返します。これらのレコードは、database1とdatabase2の両方にあります。

INTERSECTの各SELECTには、同じデータ型の結果セットに同じ数の列が含まれている必要があります。

INTERSECT演算子の構文

  SELECT b ieu_thuc1, bieu_thuc2, … bieu_thucn 
FROM bang
[WHERE dieu_kien]
INTERSECT
SELECT bieu_thuc1, bieu_thuc2, … bieu_thucn
FROM bang
[WHERE dieu_kie n];

変数名または変数値

bieu_thuc

SELECTステートメント間で比較する列または値。各SELECTステートメントで同じ情報フィールドにある必要はありませんが、対応する列には同じデータが含まれている必要があります。

状態

テーブルはそこからレコードを取得したいと考えています。 FROM句に少なくとも1つのテーブルが必要です。

どこでdieu_kien

オプション。選択したレコードの条件が満たされている必要があります。

注:

  1. 2つのSELECTステートメントには同じ数の式が必要です。
  2. 各SELECTステートメントの対応する列は、同じデータ型である必要があります。
  3. INTERSECT演算子は、SELECTステートメント間の一般的なレコードのみを返します。

たとえば、-1つの式を使用

  SELECT sa npham_id 
FROM sanpham
INTERSECT
SELECT sanpham_id
FROM hangtonk ho;

この例では、sanpham_idがsanphamテーブルとhangtonkhoテーブルの両方に表示されている場合、INTERSECTの結果セットに含まれます。

次に、このクエリにWHERE条件を追加します。

  SELECT sanph am_id 
FROM sanpham
WHERE sanpham_id >= 50
INTERSECT
SELECT sanpham_id
FROM hangtonkho
WHERE soluong > 0;

最初のデータセットは、ダッシュボードとsanpham_idのレコードをフィルタリングして返します。 50以上。2番目のデータセットはhangtonkhoからフィルタリングされます 数値が0より大きい場合はテーブル。

たとえば、複数の式を使用

  SE LECT danhba_id, ho, ten 
FROM danhba
WHERE ho = 'Anderson'
INTERSECT
SELECT nhanvien_id, ho, ten
FROM nh anvien;

この例では、クエリは2つのSELECTステートメントの共通部分の結果を返します。 danhbaのリストにレコードがある場合 そのdanhba_idhoten danhba danhba_id 、INTERSECTクエリの名前はそれらのレコードを返します。

例-ORDERBYを使用

INTERSECTクエリでORDERBY句を使用して、結果を並べ替えます。

  SELECT nhacun g_id, nhacung_ten 
FROM nhacung
WHERE nhacung_id > 500
INTERSECT
SELECT congty_id, congty_ten
FROM congty
WHERE congty_ten in ('Apple', 'Microsoft', 'SQL Server')
ORDER BY 2;

2つのSELECTステートメントの列名が異なるため、結果セット内の位置によってORDERBY句の列を参照する方が簡単です。上記の例では、結果をフィルタリングしますnhacung_ten / congty_ten ORDERBY2というフレーズを昇順で並べます。

nhacung_tenのため / congty_ten 結果セットの2番目です。


  1. SQLServerのINTERSECT演算子

    SQL Server(Transact-SQL)では、INTERSECT演算子を使用して、データセットまたはSELECTステートメントの両方のレコードを返します。レコードが一方のクエリでのみ使用可能で、もう一方のクエリでは使用できない場合、そのレコードはINTERSECTの結果セットから削除されます。 INTERSECTクエリ INTERSECTクエリから返された結果を示します 説明: INTERSECTクエリは、青い塗りつぶし領域にあるレコードを返します。これらのレコードは、database1とdatabase2の両方にあります。 INTERSECTの各SELECTには、同じデータ

  2. MSSQLServerでデータベースを選択する方法

    MS SQL Serverでデータベースを選択して、以下のいずれかの方法で操作できます。 方法1:SQL ServerMangementStudioを使用する クエリを実行して、 msdb、という名前のデータベースのバックアップ履歴を選択します。 msdbを選択します 下の画像に示すように。 データベースバックアップセクションから選択 方法2:T-SQLスクリプトを使用する Use クエリを実行して、 msdb、という名前のデータベースのバックアップ履歴を選択します。 msdbを選択します 次のクエリを実行することで Exec use msdb このクエリはmsdbデータベ