0

データベース DB1 に次のデータがあるとします。

Table1 id int (50) 属性 varchar(255)

総行数: 6550

Table2 id int (50) attribute varchar(255) attribute1 varchar(255)

総行数: 10550

おそらくもっとテーブルを言ってください。すべてのテーブルのすべてのデータ要素を取得したいと考えています。これを行うことができるSELECTステートメントなどはありますか?使ってみた

select * from DB1.Table1 UNION ALL select * from DB1.Table2;

ただし、これにより、行数が異なるため実行できないというエラーが表示されました。誰かがそうする方法があれば教えてください。

よろしく。

4

4 に答える 4

2

各テーブルの列を明示的に指定する必要があります。お気に入り:

select id, attribute, '' AS attribute1 from DB1.Table1
UNION ALL 
select id, attribute, attribute1 from DB1.Table2;
于 2013-05-20T17:35:00.253 に答える
1

私はあなたができると思います:Select * from db1.table1、db1.table2

于 2013-05-20T17:37:06.037 に答える
1

UNION は機能しますが、* を使用しないでください。また、最初のテーブルの SELECT に「余分な」列を追加する必要があります (ただし、列が実際にテーブルに存在する必要はありません。選択が一致します)。このようなもの:

SELECT t1.id as 'id',
       t1.attribute as 'attribute',
       '' as 'attribute1'
FROM DB1.Table1 as t1

UNION ALL

SELECT t2.id as 'id',
       t2.attribute as 'attribute',
       t2.attribute1 as 'attribute1'
FROM DB1.Table2 as t2
于 2013-05-20T17:41:01.433 に答える
0

ユニオンでは、すべての選択ステートメントで同じ数の列が必要です。したがって、「select * from table1 union select * from table2」と言っても機能しません。列が最も多いテーブルよりも列が少ないテーブルには、ダミー列を追加する必要があります。

そして、結果は何を意味するでしょうか?たとえば、顧客の郵便番号、注文合計、従業員番号などを含む列があるとします。あなたはそれで何をしますか?

人間が見るためにデータベースの内容全体をダンプすることがポイントである場合、テーブルごとに個別の選択ステートメントを実行しないのはなぜですか?

おそらく、意味がないために実行しないように明示的に設計されていることをデータベースに実行させる方法に取り組むのではなく、一歩下がって、達成しようとしていることを確認する必要があります。

于 2013-05-20T18:19:37.200 に答える