我们说我有几张表使用相同的名称模式,例如:
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%
答案 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;