SQL查询表别名

时间:2015-07-10 08:17:06

标签: sql sql-server vb.net

有没有办法命名/别名SQL查询的数据表?

I.e。:

SELECT TOP 10 * FROM Table_MOON;
SELECT TOP 10 * FROM Table_SUN;

当您在数据集“ds”中加载它时,即在VB.NET中,它变为:

ds.table(0)
ds.table(1)

是否有办法在SQL查询中对表进行别名,以便可以调用以下表:

ds.table("Table_MOON")
ds.table("Table_SUN")

问题是,当表(0)为空时,表(1)变为表(0)......

我没有对这件事进行谷歌搜索,因为涉及的关键词过于笼统。

修改 请注意,我们的想法是将其保留在一个交易中。 此外,迭代数据流方法(添加具有数据表名称的列)是不可接受的,因为嵌套并导致可能的高处理时间。

问候,

Libor的

2 个答案:

答案 0 :(得分:3)

是的,你可以。

SqlConnection connection = new SqlConnection("Data Source=localhost; Initial Catalog=myDatabase; Trusted_Connection=true;User Id=;Password=");
connection.Open();

string sqlUsers = @"select * from Users";
string sqlRoles = @"select * from Roles";

SqlDataAdapter daUsers = new SqlDataAdapter(sqlUsers, connection);
SqlDataAdapter daRoles = new SqlDataAdapter(sqlRoles, connection);

DataSet dsUsersAndRoles = new DataSet("UserAndRoles");

daUsers.Fill(dsUsersAndRoles, "users");
daRoles.Fill(dsUsersAndRoles, "roles");

var userTable = dsUsersAndRoles.Tables["users"];

您可以在填写数据集时指定名称。

注意:此代码是c#但我想它应该很容易转换。

这是converter,以防万一。

<强>更新

您可以使用TableMappings的{​​{1}}集合来映射查询表达式中的每个表:

SqlDataAdapter

正如您所看到的,我的Sql语句包含3个表上的3个查询。 表名为SqlConnection connection = new SqlConnection("Data Source=localhost; Initial Catalog=myDatabase; Trusted_Connection=true;User Id=;Password="); connection.Open(); string sqlUsersRoles = @"select * from UserLogins;select * from Users;select * from Roles"; SqlDataAdapter daUsersRoles = new SqlDataAdapter(sqlUsersRoles, connection); daUsersRoles.TableMappings.Add("Table", "UserLogins"); daUsersRoles.TableMappings.Add("Table1", "Users"); daUsersRoles.TableMappings.Add("Table2", "Roles"); DataSet dsUsersAndRoles = new DataSet("UserAndRoles"); daUsersRoles.Fill(dsUsersAndRoles); DataTableCollection tables = dsUsersAndRoles.Tables; DataTable users = tables["Users"]; TableTable1等等。

您可以重命名它们,将元素添加到集合中:

Table2

答案 1 :(得分:0)

正如我从SQL查询中直接知道的那样,你不能这样做,但你可以在下面手动命名它们:

ds.table[0].TableName = "Table_MOON";