1

次のようなテーブルがあります。

+----+---------+---------+
| Id | column1 | column2 |
+----+---------+---------+
|  1 | a       | b       |
|  2 | a       | b       |
+----+---------+---------+

そして、このようなクエリSELECT * FROM table WHERE id IN (1,2,3)

このような結果を得るために必要なクエリは何ですか (存在しない ID の null 値を取得する必要があります):

+----+---------+---------+
| Id | column1 | column2 |
+----+---------+---------+
|  1 | a       | b       |
|  2 | a       | b       |
|  3 | null    | null    |
+----+---------+---------+

編集

これまでの回答に感謝します。

これを行うためのより「動的な方法」はありますか。上記のクエリは単なる例です。実際には、約1000のIDをチェックする必要があります!

4

2 に答える 2

1

次のようなものを使用できます。

SELECT ids.ID, your_table.column1, your_table.column2
FROM
  (SELECT 1 as ID
   UNION ALL SELECT 2
   UNION ALL SELECT 3) ids left join your_table
  on ids.ID = your_table.ID

最初のサブクエリは、必要な各値を別の行に返します。次に、各行を で結合してみてくださいyour_table。を使用するleft joinと、最初のサブクエリからのすべての値が表示され、 と一致する場合はyour_tableからの値your_tableが表示されます。

于 2012-12-14T22:18:53.763 に答える
0

残念ながら、これは SQL の動作方法ではありません。アプリケーションが要求した ID と返された ID の違いを判断するのは簡単なことだと思います。

では、結果をモックアップするためにハッキングしたり、奇妙なクエリを実行したりするのではなく、アプリケーションで処理してみませんか?

存在する場合と存在しない場合があるIDでデータベースの行をクエリする場合のユースケースが何であるかはまだ理解できません。

于 2012-12-14T22:19:29.623 に答える