C# 使用Datatable查询一行中多个select的组合
我将继续向您展示一个简单的示例来进行解释C# 使用Datatable查询一行中多个select的组合,c#,sql,sqlite,C#,Sql,Sqlite,我将继续向您展示一个简单的示例来进行解释 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, thisi
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个select组合的结果,而不仅仅是两个
它正在工作,但是我想要一个数据表,在那里我可以使用
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();
}
这应该在SQL中完成。如果你有问题,那么你可以尝试做不同的。您不需要表上的索引来连接它们
select distinct n.NAME, a.AGE
from NAMES n
JOIN AGES a on a.ID = n.ID
where n.ID=1
您可以创建一些自定义代码,从中获得两个数据表并以某种方式合并它们,但我认为这不是一个好的解决方案
如果由于某种原因,年龄和名称上的ID不同,并且无法联接,则您可能应该使用两个参数AgeId和NameId创建SQL查询:
select distinct n.NAME, a.AGE
from NAMES n
cross join AGES a
where n.ID=@nameId
and a.ID=@ageId
你的例子毫无意义。表之间有一个链接,即,
id
。我认为您应该发布另一个问题,并对问题进行更好的解释(修改此问题对@NickBray不公平,因为这可能会导致他的答案不正确)。我发明了一个示例,让我修改id列。你真的应该问另一个问题。根据最初的公式,尼克的回答是正确的。您应该在from
子句中使用交叉连接
,而不是逗号。“,”是一种古老的SQL语法。