我目前有两个表,其中versionLog可以包含许多ProductVersions。
以下Sql查询:
private List<Bind> _Registers = new List<Bind>();
private ModbusClient modbusClient;
private void Form1_Load(object sender, EventArgs e)
{
modbusClient = new ModbusClient("10.54.11.252", 502);
modbusClient.Connect();
int[] ReadValues = modbusClient.ReadHoldingRegisters(0, 1);
for(var i = 0; i < ReadValues.length; i++)
{
Registers.Add(new Bind()
{
Value = ReadValues[i];
});
}
txt40001.DataBindings.Add(new Binding("Text", Registers[0],
"Value", true, DataSourceUpdateMode.OnPropertyChanged));
}
public List<Bind> Registers
{
get
{
return _Registers;
}
set
{
_Registers = value;
}
}
产生类似于
的结果集SELECT
versionlog.[Name],
(
SELECT COUNT(*)
FROM dbo.ProductVersions productVersion
WHERE productVersion.VersionLogId = versionLog.Id
) AS ProductVersions
FROM dbo.Versionlog versionLog
等等。
如何限制结果集仅返回ProductVersion Count = 0的Versionlog?
根据google,我需要使用Name | ProductVersions
Log1 | 12
Log2 | 6
Log3 | 0
子句吗?
答案 0 :(得分:1)
使用HAVING
:
SELECT versionlog.[Name]
FROM dbo.Versionlog versionLog
LEFT JOIN dbo.ProductVersions productVersion
ON productVersion.VersionLogId = versionLog.Id
GROUP BY versionlog.[Name]
HAVING COUNT(productVersion.VersionLogId) = 0;
且未分组:
SELECT versionlog.[Name]
FROM dbo.Versionlog versionLog
LEFT JOIN dbo.ProductVersions productVersion
ON productVersion.VersionLogId = versionLog.Id
WHERE productVersion.VersionLogId IS NULL
答案 1 :(得分:0)
另一种子查询
select * from
(
SELECT
versionlog.[Name],
(
SELECT COUNT(*)
FROM dbo.ProductVersions productVersion
WHERE productVersion.VersionLogId = versionLog.Id
) AS ProductVersions
FROM dbo.Versionlog versionLog
) a where a.ProductVersions=0