4

こういう出力が欲しい

ID      Status
100     Viewed
103     Not Viewed
105     Viewed

これは私のSQLです:

select id, status from status_table where ID in (100, 101,102,103,104,105);

ステータステーブルには他のIDにエントリがないため、上記の結果が表示されます。ID is foreign key of another table named as table_file table. It contains in another database. So I cannot join the table due to some performance issue.したがって、ファイルIDをコンマ区切りの値として渡します。しかし、私はこの種の結果が欲しいのですが、ループを使用せずにこれを作成するにはどうすればよいですか。

ID    Status
100   Viewed
101   Not
102   Not
103   Viewed
104   Not
105   Viewed

出来ますか?私を助けてください。

4

2 に答える 2

1

それらの ID が存在するテーブルはありますか? それに参加できるように?

SELECT
  source.ID,
  status.value
FROM
  source
LEFT JOIN
  status
    ON status.id = source.id
WHERE
  source.ID in (100, 101,102,103,104,105);

そうでない場合は、一時テーブルまたはインライン テーブル (それらの値を含む) を作成する必要があります。次に、そのテーブルをデータに結合できます。

編集

インライン テーブルの例。これにはいくつかの方法がありますが、これは 1 つにすぎません。

SELECT
  source.ID,
  status.value
FROM
  (
    SELECT 100 AS id UNION ALL
    SELECT 101 AS id UNION ALL
    SELECT 102 AS id UNION ALL
    SELECT 103 AS id UNION ALL
    SELECT 104 AS id UNION ALL
    SELECT 105 AS id
  )
  AS source
LEFT JOIN
  status
    ON status.id = source.id
于 2012-01-16T11:06:15.633 に答える
0

が欠落しているときに「Not」と仮定すると、次のIDように実行できます。

SELECT
  so.ID,
  CASE WHEN st.value IS NULL THEN 'Not' ELSE st.value END
FROM
  databasename1..source so
LEFT JOIN
  databasename2..status st
    ON st.id = so.id
WHERE
  so.ID in (100, 101,102,103,104,105)

databasename1databasename2を実数に置き換えますdatabase names

于 2012-01-16T11:11:18.617 に答える