0

以下を実行するには、どの SQL コードが必要ですか? :

私は1つのテーブルを持っています(テーブルを任意に「名前」と呼びましょう):

ID | Name1  | Name2
---+--------+-------
1  | Fred   | Jack
2  | Jack   | Jim
3  | Jill   | Fred
4  | Jim    | Jack

私が生成したいのは、名前 1 と名前 2 の単一のリスト (グループ化や順序付けは気にしません) ですが、名前との元の 'ID' 関連付けを保持したいと思います。

ID | Names
---+------
1  | Fred
1  | Jack
2  | Jill
2  | Jim
3  | Jack
3  | Jim
4  | Fred
4  | Jack

なぜ私はこれをしたいのですか?それは簡単に見え、SQL コーダーとしておそらくこのタスクを実行できるはずですが、この出力を作成するソリューションがわかりません。さらに、フィールドを連結したい人を見つけることができただけで、これは簡単な作業ですが、連結には興味がありません。

追加の質問: Name1 フィールドが Name2 とは別のテーブルにある場合、SQL クエリは大きく異なりますか? (違うとしたら、どんな感じですか?)

追加の質問: ID フィールドを気にしなければ、SQL クエリはより単純になりますか? もしそうなら、それはどのように見えるでしょうか。

4

2 に答える 2

1

このフォームを使用して ID を含め、ID による特定の順序を指定できます。

SELECT n.id, n.name1 FROM names n
UNION
SELECT m.id, m.name2 from names m
ORDER BY id ASC;

別のテーブルにある場合は、UNION の使用を変更する必要はありません。テーブルからの結果をまとめて、ID で並べ替えているからです。ただし、これはデータが関連していることを意味するものではありません。

SELECT n.id, n.name FROM name_one n
UNION
SELECT m.id, m.name from name_two m
ORDER BY id ASC;

ID フィールドを気にしなければ、非常に簡単になります。その時点で 1 つの列を選択するだけです。

于 2013-04-29T00:27:57.017 に答える