【问题标题】:SQL Select Multiple table at oncesSQL一次选择多个表
【发布时间】:2018-02-07 21:48:35
【问题描述】:

我在想有没有可以一次选择多个表的查询?不使用JOINS。我试图研究它,但我得到的只是

SELECT * FROM Table WHERE ID IN (parameter1,parameter2);

我试过这种查询

select * from Table Table1,Table2

但结果仅来自 Table1。

所有表都不是相互关联的,所以这意味着它们是不同的表。我在这里要做的是检查表格是否有数据。我使用的是查询所有one-by-one 使用

select * from Table

一次又一次。希望这能解释一下。

【问题讨论】:

  • 试试这个:select * from Table1,table2,table3...
  • @chiragsatapara 该查询。我试试看。
  • 请说明您要达到的目标。为什么 JOIN 不适合您的任务?表的结构/列设置是否相同?为什么不能键入多个查询(每个表一个)?
  • @KiRa:您真的在寻找一个组合表作为输出,还是单独的表?如果结合使用,您可以使用 chirag satapara 的解决方案。 else 分别编写每个 select 语句,您可以将它们检索到 DataSet。
  • 然后就可以这样写了 SELECT * FROM table1;从表 2 中选择 *;在 c# 代码中,您可以使用 DataSet 来保存它们,并且可以使用 index as .Table[index] 分别访问每个表

标签: sql sql-server-2008


【解决方案1】:

对于作为输出的组合表:

联合

要允许重复值,请使用:

联合所有

SELECT * FROM table1 

UNION 

SELECT * FROM table2

对于作为输出的分隔表:

数据集

DataSet dataSet = new DataSet();
DataTable table1 = new DataTable("table1");
DataTable table2 = new DataTable("table2");
dataSet.Tables.Add(table1);
dataSet.Tables.Add(table2);
using(SqlCommand cmd = new SqlCommand("SELECT * FROM table1;SELECT * from table2", con))
{
    using(SqlDataReader dr = cmd.ExecuteReader())
    {
        dataSet.Load(dr, LoadOption.OverwriteChanges, table1, table2);
    }
}

现在您可以像这样 (msdn documentation) 使用 DataSet 的表:

private void PrintRows(DataSet dataSet)
{
    // For each table in the DataSet, print the row values.
    foreach(DataTable table in dataSet.Tables)
    {
        foreach(DataRow row in table.Rows)
        {
            foreach (DataColumn column in table.Columns)
            {
                Console.WriteLine(row[column]);
            }
        }
    }
}

【讨论】:

    【解决方案2】:

    看看 SQL 命令UNION。然后你可以做类似的东西

    SELECT * FROM table1
    UNION
    SELECT * FROM table2;
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-03-05
      • 2018-07-11
      • 2015-10-27
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多