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在此数据库中进行选择,该表似乎也不存在。你能运行上面的命令并向我们展示输出吗?

更新:如果您需要从两个不同的数据库中进行选择:

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 回答