问题描述
这听起来与this post类似,但涉及的内容更多。我想做的是检查表1中的列条目数等于第2列中的存储值。
table1:
+------+--------------+
| id | isComplete | VARCHAR,TINYINT
+------+--------------+
| 20 | true |
| 20 | false |
| 20 | true |
+------+--------------+
table2:
+------+--------------+
| id | numJobs | VARCHAR,TINYINT
+------+--------------+
| 20 | 3 |
+------+--------------+
因此,这个想法基本上是检查isComplete === true
(2)的数量是否等于numJobs
(3)的值。
这是我的开始:
SELECT COUNT(*) FROM table1 WHERE id = 20
AND isComplete = true
AND LIKE (SELECT numJobs FROM table2 WHERE id = 20);
我所需要的只是对/错的返回,但是我被卡住了。有人可以指出我正确的方向吗?
解决方法
77.00
和true
在数字上下文中充当false
和1
。因此,您可以汇总0
列并将其加入isComplete
:
table2
,
如果列isComplete
的数据类型是BOOLEAN
或INTEGER
(0
或1
),则需要检查列的总和:
SELECT SUM(t1.isComplete) = (SELECT t2.numJobs FROM table2 t2 WHERE t2.id = t1.id) result
FROM table1 t1
WHERE t1.id = 20
表达式:
SUM(t1.isComplete) = (SELECT t2.numJobs FROM table2 t2 WHERE t2.id = t1.id)
的值为0
或1
。
请参见demo。
您的样本数据的结果:
| result |
| ------ |
| 0 |