SQL将满足条件的个数相加并与其他列进行比较
SQL sum the number of satisfied conditions and compare with other column
如果某个条件成立,我想检查三列。接下来,我想对这三个布尔值求和,并检查它们是否与第四列中的值相同。
SELECT SUM(CASE WHEN column1 LIKE 'D%' THEN 1 ELSE 0 END) AS bool1
SUM(CASE WHEN column2 LIKE 'D%' THEN 1 ELSE 0 END) AS bool2
SUM(CASE WHEN column3 LIKE 'D%' THEN 1 ELSE 0 END) AS bool3
FROM table
WHERE bool1 + bool2 + bool3 = column4
然而,这给出了一个错误。我应该如何更改查询?
聚合函数SUM()
对一列的所有值进行操作,因此将其与另一列的特定值进行比较没有意义。
我怀疑你想要这样的东西:
SELECT *
FROM tablename
WHERE (column1 LIKE 'D%') + (column2 LIKE 'D%') + (column3 LIKE 'D%') = column4
每个布尔表达式 columnX LIKE 'D%'
对于 false
的计算结果为 0
,对于 true
的计算结果为 1
。
如果列中有 null
s 更改为:
WHERE COALESCE(column1 LIKE 'D%', 0) +
COALESCE(column2 LIKE 'D%', 0) +
COALESCE(column3 LIKE 'D%', 0) = column4
如果某个条件成立,我想检查三列。接下来,我想对这三个布尔值求和,并检查它们是否与第四列中的值相同。
SELECT SUM(CASE WHEN column1 LIKE 'D%' THEN 1 ELSE 0 END) AS bool1
SUM(CASE WHEN column2 LIKE 'D%' THEN 1 ELSE 0 END) AS bool2
SUM(CASE WHEN column3 LIKE 'D%' THEN 1 ELSE 0 END) AS bool3
FROM table
WHERE bool1 + bool2 + bool3 = column4
然而,这给出了一个错误。我应该如何更改查询?
聚合函数SUM()
对一列的所有值进行操作,因此将其与另一列的特定值进行比较没有意义。
我怀疑你想要这样的东西:
SELECT *
FROM tablename
WHERE (column1 LIKE 'D%') + (column2 LIKE 'D%') + (column3 LIKE 'D%') = column4
每个布尔表达式 columnX LIKE 'D%'
对于 false
的计算结果为 0
,对于 true
的计算结果为 1
。
如果列中有 null
s 更改为:
WHERE COALESCE(column1 LIKE 'D%', 0) +
COALESCE(column2 LIKE 'D%', 0) +
COALESCE(column3 LIKE 'D%', 0) = column4