是否可以从没有完整表名的表中进行选择?

时间:2014-08-15 17:49:54

标签: mysql

我们说我有几张表使用相同的名称模式,例如:

my_1_some_table
my_2_some_other_table
my_3_and_another

我可以仅使用my_1_查询这些表吗?

提前感谢任何提示...

修改

我觉得我还不够清楚。我只想查询一个表:

SELECT * FROM my_1_some_table;

但不使用全名。例如:

SELECT * FROM my_1%

5 个答案:

答案 0 :(得分:3)

你不能。从中选择数据时,必须指定表的名称。您可以做的最好是为表创建别名,但是您也需要为所有表创建唯一的别名。

答案 1 :(得分:2)

不,你不能。至少没有别名。您可以使用别名以便轻松引用该表。

例如:

SELECT my_1.field, my_1.another_field, my_2.field_from_other_table
FROM my_1_some_table as my_1
JOIN my_2_some_other_table as my_2 on (...)

答案 2 :(得分:1)

您可以先使用语句获取所需的表格:

SELECT table_name FROM information_schema.tables WHERE table_name LIKE 'my_1_%';

然后使用您检索的内容创建一个查询(存储在 preparedQuery 中)。

SET @myQuery = preparedQuery;
PREPARE query FROM @myQuery;
EXECUTE query;
DEALLOCATE PREPARE query;

答案 3 :(得分:0)

作为R.T.回答,你不能 - 至少不是直接的。 但是,如果您只对查询感兴趣,可以使用的一个肮脏技巧是创建视图:

CREATE VIEW my_1 AS SELECT * FROM my_1_some_table

然后你可以从中查询:

SELECT * FROM my_1

答案 4 :(得分:0)

有一个简单的解决方法,只需使用小名称创建一个简单的视图,然后您可以使用那些较小的视图名称代替tablename ....

Eg. 
-- create views with smaller name...
create or replace view my_1 as select * from my_1_some_table;
create or replace view my_2 as select * from my_2_some_other_table;
create or replace view my_3 as select * from my_3_and_another;

-- use these view name in your query...
select * from my_1;
select * from my_2;
select * from my_3;