0

我将通过向您展示一个简单的示例来继续进行解释

table NAMES
 ID_NAMES
 NAME

table AGES
 ID_AGES
 AGE

这是我的查询

SELECT 
( 
  select NAME
  from NAMES 
  where ID_NAME=1
) as thisismyname,
(
  select AGE
  from AGES
  where ID_AGE=50
) as thisiymyage

我期待这样的结果

thisismyname, thisismyage

我完全知道这完全是愚蠢的,因为我可以进行连接并获得简单的查询,但是表之间没有链接,这将是 50 个选择组合的结果,而不仅仅是两个。

它正在工作,但我想要一个数据表,我可以使用它来查询

 mydatatable[0]["thisismyname"]

实际上,它只给我一个 ExecuteScalar 的结果,而 SQLDataReader 给了我空的 DataTable

using (var conn = Connection)
{
  DbCommand mycommand = GetCommand(conn, sql);
  DbDataReader reader = mycommand.ExecuteReader();
  dt.Load(reader);
  reader.Close();
  conn.Close();
}
4

1 回答 1

2

这应该在 SQL 中完成。如果你有问题,那么你可以尝试做不同的事情。您不需要表上的索引来加入它们。

  select distinct n.NAME, a.AGE
  from NAMES n
     JOIN AGES a on a.ID = n.ID
  where n.ID=1

您可以创建一些自定义代码,在其中获取两个数据表并以某种方式合并它们,但我认为这不是一个好的解决方案。

如果出于某种原因,AGES 和 NAMES 上的 ID 不同并且无法连接,那么您可能应该使用 2 个参数 AgeId 和 NameId 创建 SQL 查询:

  select distinct n.NAME, a.AGE
  from NAMES n
        cross join AGES a
  where n.ID=@nameId
    and a.ID=@ageId
于 2013-01-04T13:44:30.003 回答