Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/259.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/80.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# SQL:一次运行两个查询并分配变量_C#_Sql_Sql Server - Fatal编程技术网

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帖子。感谢您提供的解决方案!谢谢你的解决方案!谢谢你的解决方案!谢谢你的解决方案!