0

誓いますが、これは教育目的のみです...

MySQL クエリは次のようになります。

SELECT * 
FROM mytable 
where name='value' AND addr='value' 
UNION SELECT * 
      FROM mysql.user;

しかし、私が得るエラーは、ないということですmysql.mytable table

クエリを有効にするために、ユニオンまたはこれらの値のいずれかでできることはありますか? mytableコードでデータベース名を明示的に指定する以外に? 「値」の前のクエリでは何も変更できないと仮定しましょう。

4

2 に答える 2

1

何から選択しようとしているのかはあまり明確ではありませんinformation_schema.userinformation_schemaは標準の MySQL データベースで、デフォルトでそこにあります。ただしuser、このデータベースにはテーブルがありません。

データベースのリストを表示するには、MySQL コンソールで次の操作を行います。

show databases;

データベース内のテーブルを表示するには:

use information_schema
show tables;

あなたが言っていることからinformation_schema、デフォルトでデータベースを使用しているようです。また、このデータベースで選択しようとしていますがmytable、このテーブルも存在しないようです。上記のコマンドを実行して、出力を表示していただけますか?

更新: 2 つの異なるデータベースから選択する必要がある場合:

select * from mydatabase.mytable union select * from mysql.users

mydatabase現在のデータベースにある場合は削除するかmytable、代わりにデータベースの適切な名前を指定してください。mydatabaseこれはほんの一例です。

ただし、すでに指摘されているように、両方のテーブルに同一の列を含めるか、各テーブルから選択する同一の列を指定する必要があります。

于 2013-01-18T15:48:52.713 に答える
0

機能的で有効な UNION 句の場合、両方のクエリで同じ列が必要です。選択に欠落している列、別名でデフォルトの NULL を強調表示:

Select *, NULL as "column1" FROM table1 ...
于 2013-01-18T15:49:01.897 に答える