c# - 带有子查询的 SQL 查询
问题描述
我尝试获取其他表中使用的记录数,但 SQL 返回 null
这是我的代码:
DBConnectionClass.Command.CommandText =
"SELECT COUNT(IMO)
FROM vessel
WHERE ('" + IMO + "' =
(SELECT IMO FROM ActOfExemption))
OR ('" + IMO + "' = (SELECT IMO FROM Waybill))";
object SQL = DBConnectionClass.Command.ExecuteScalar();
byte Result = Convert.ToByte(SQL);
相同的查询但有效且没有子查询:
DBConnectionClass.Command.CommandText =
"SELECT COUNT(IMO)
FROM ActOfExemption
WHERE IMO = '" + IMO + "'";
object SQL = DBConnectionClass.Command.ExecuteScalar();
byte Result = Convert.ToByte(SQL);
DBConnectionClass.Command.CommandText =
"SELECT COUNT(IMO)
FROM Waybill
WHERE IMO = '" + IMO + "'";
SQL = DBConnectionClass.Command.ExecuteScalar();
Result += Convert.ToByte(SQL);
如何在一个带有子查询的查询中做到这一点?
解决方案
你的问题似乎是关于 SQL 的,所以我将忽略 C# 代码的明显问题......
假设 C# 变量 IMO 的值为“abc”,SQL 将如下所示:
SELECT
(
SELECT COUNT(v.IMO)
FROM vessel v
INNER JOIN ActOfExemption a on a.IMO = v.IMO
WHERE v.IMO = 'abc'
) +
(
SELECT COUNT(v.IMO)
FROM vessel v
INNER JOIN Waybill W on W.IMO = v.IMO
WHERE v.IMO = 'abc'
)
但这可能导致两次计算同一船只记录。
推荐阅读
- vue.js - 使用 vuejs 登录时热重载
- javascript - 不显示来自 localStorage 的数据
- angular - 无法读取未定义的属性 _id。角度图像上传服务类型错误
- python - 如何使用 python 中另一个文件的值导入更新的变量
- elasticsearch - Elasticsearch 无法识别新节点
- javascript - 将文本从状态添加到 ReactSummerNote 的正文
- curl - SLURM:卷曲的作业无缘无故地取消了 2 卷曲 [JobState=CANCELLED 原因=无 ExitCode=0:15]
- pine-script - 如何在“过去 14 根蜡烛的时期/如何定义过去 14 根蜡烛的范围或时期?”中检查条件是真还是假?
- c++ - 怎么了?尽管#define _USE_MATH_DEFINES 和#include,M_PI 未声明错误
- java - Tomcat 9 上的 SSL Windows 认证错误