C# SQL:一次运行两个查询并分配变量
我基本上是在尝试运行这两个查询:C# SQL:一次运行两个查询并分配变量,c#,sql,sql-server,C#,Sql,Sql Server,我基本上是在尝试运行这两个查询: SELECT * FROM ProductTable; SELECT CAST(CASE WHEN COUNT(*) > 0 THEN 1 ELSE 0 END AS BIT) FROM UserTable WHERE id = 41; 两个查询都能正常工作。第一个返回ProductTable中的所有数据。在检查行ID 41是否存在后,第二个查询返回我1或0 一起运行它们: SELECT * FROM ProductTable SELECT CAST(
SELECT * FROM ProductTable;
SELECT CAST(CASE WHEN COUNT(*) > 0 THEN 1 ELSE 0 END AS BIT)
FROM UserTable WHERE id = 41;
两个查询都能正常工作。第一个返回ProductTable中的所有数据。在检查行ID 41是否存在后,第二个查询返回我1
或0
一起运行它们:
SELECT * FROM ProductTable SELECT CAST(CASE WHEN COUNT(*) > 0 THEN 1 ELSE 0 END AS BIT)
FROM UserTable WHERE id = 41
但是,当我运行这个查询时,第二个查询不会返回任何值,这是因为我没有为它设置SQL变量名。
如何为第二个查询设置变量名,以便在读取SQL响应时读取该值?尝试如下操作
SELECT *
,(
SELECT CAST(CASE
WHEN COUNT(*) > 0
THEN 1
ELSE 0
END AS BIT)
FROM UserTable
WHERE id = 41
) AS UserCount
FROM ProductTable;
试着这样,
SELECT *
,(
SELECT CAST(CASE
WHEN COUNT(*) > 0
THEN 1
ELSE 0
END AS BIT)
FROM UserTable
WHERE id = 41
) AS UserCount
FROM ProductTable;
您也可以使用交叉应用
SELECT p.*,t.[BIT] FROM ProductTable p
CROSS APPLY (SELECT CAST(CASE WHEN COUNT(*) > 0 THEN 1 ELSE 0 END AS [BIT])
FROM UserTable WHERE id = 41)t
您也可以使用交叉应用
SELECT p.*,t.[BIT] FROM ProductTable p
CROSS APPLY (SELECT CAST(CASE WHEN COUNT(*) > 0 THEN 1 ELSE 0 END AS [BIT])
FROM UserTable WHERE id = 41)t
如果在检查行ID 41是否存在后需要1或0(在Pinwar13回答之后),则此代码的性能更好,无需计算所有行
DECLARE @val BIT = CASE WHEN EXISTS (SELECT 1 FROM UserTable WHERE id = 41)
THEN 1 ELSE 0 END;
SELECT P.*, @val FROM ProductTable P
如果在检查行ID 41是否存在后需要1或0(在Pinwar13回答之后),则此代码的性能更好,无需计算所有行
DECLARE @val BIT = CASE WHEN EXISTS (SELECT 1 FROM UserTable WHERE id = 41)
THEN 1 ELSE 0 END;
SELECT P.*, @val FROM ProductTable P
您希望从查询中得到什么最终结果?显示执行查询和读取结果的C#代码产品表有5列,我还需要读取第二个查询的数据作为一列。如果你知道我的意思。因此,我将阅读6列@Pinwar13I。我运行了您的查询并得到了结果。这是相同的查询,只是表不同。您希望从查询中得到什么最终结果?显示执行查询和读取结果的C#代码产品表有5列,我还需要将第二个查询的数据作为一列读取。如果你知道我的意思。因此,我将阅读6列@Pinwar13I。我运行了您的查询并得到了结果。这是相同的查询,只是表不同。很好的解决方案!为了了解它,你能解释一下它是如何工作的吗?第二个查询是子查询吗?是,它是子查询。子查询将针对主查询中的每条记录运行,但请确保子查询只返回一条记录。您可以选择最适合解决问题的答案。感谢您提供的解决方案和解释!您可以将子查询结果分配给变量,然后选择producttable和该变量。参考Pinwar13贴子。很好的解决方案!为了了解它,你能解释一下它是如何工作的吗?第二个查询是子查询吗?是,它是子查询。子查询将针对主查询中的每条记录运行,但请确保子查询只返回一条记录。您可以选择最适合解决问题的答案。感谢您提供的解决方案和解释!您可以将子查询结果分配给变量,然后选择producttable和该变量。请参阅Pinwar13帖子。感谢您提供的解决方案!谢谢你的解决方案!谢谢你的解决方案!谢谢你的解决方案!