我发誓,这仅用于教育目的...
MySQL 查询如下所示:
SELECT *
FROM mytable
where name='value' AND addr='value'
UNION SELECT *
FROM mysql.user;
但我得到的错误是没有mysql.mytable table.
我可以在工会或其中任何一个值中做些什么来使我的查询有效吗?除了mytable在代码中明确说明数据库名称之外?假设我不能在“值”之前更改查询中的任何内容。
目前还不清楚您要从中选择什么information_schema.user。information_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这里只是一个例子。
但是,正如已经向您指出的那样,您应该在两个表中具有相同的列,或者指定从每个表中选择相同的列。
对于功能有效的 UNION 子句,您必须在两个查询中具有相同的列。选择中缺少列,使用别名突出显示默认 NULL:
Select *, NULL as "column1" FROM table1 ...