我将通过向您展示一个简单的示例来解释
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个选择的结果,而不仅仅是两个。< / p>
它正常工作,但我想要一个DataTable,只需使用
即可查询 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();
}
答案 0 :(得分: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