0

良い一日。

私は2つのSQLクエリを持っています:

初め:

SELECT name FROM 
TableOne
WHERE city='3452' AND firm='49581' AND service='2'
Group by name

2番:

SELECT name FROM 
TableTwo
WHERE city='3452' AND firm='49581' AND service='2'
Group by name

2 つのクエリ sql を組み合わせて、2 つのテーブルからすべての名前を (名前でグループ化して) 選択する方法を教えてください。

4

4 に答える 4

1

さて、「結合」には多くの意味がありますが、次のようなものが必要だと思います。

SELECT name
FROM (
    SELECT name, city, firm, service FROM TableOne
    UNION ALL
    SELECT name, city, firm, service FROM TableTwo
) Q
WHERE city='3452' AND firm='49581' AND service='2'
GROUP BY name

GROUP BY はとにかく重複を削除するため、UNION (ALL なし) を使用する必要はありません。

ところで、WHERE句で使用されているこれらのフィールドはすべて本当に文字列ですか? そうでない場合は、必要に応じて一重引用符を削除してください。数値のみを含む文字列リテラルを使用しているとは少し疑わしいです。

于 2013-05-20T00:14:00.850 に答える
1

http://sqltutorials.blogspot.com/2007/06/sql-union-all.htmlを使用できますUNION ALL

SELECT name
FROM (
    SELECT name 
    FROM TableOne
    WHERE city='3452' AND firm='49581' AND service='2'
    UNION ALL
    SELECT name 
    FROM TableTwo
    WHERE city='3452' AND firm='49581' AND service='2' ) x
GROUP BY name
于 2013-05-19T23:42:43.617 に答える
1

UNION2 つのクエリ間で演算子を使用するだけです。この同様の質問の回答によると:

クエリで UNION を使用することを検討している可能性があります。

Select * from a UNION Select * from b Note:

* 参照を使用する代わりに、列名を修飾することをお勧めします。これにより、2 つのテーブルにスキーマの変更が加えられたが、2 つのテーブルに共通するすべてのデータを取得したい場合にも、クエリは引き続き役立ちます。

Union同じオブジェクトを除外します。それを避けるために、代わりに使用できますUNION ALL

于 2013-05-19T23:58:25.797 に答える
0

この構文は少し単純で、維持しやすいと思います。2 行目のコンマは結合を行います。

SELECT name FROM 
TableOne, TableTwo
WHERE city='3452' AND firm='49581' AND service='2'
Group by name
于 2013-05-20T00:22:27.620 に答える