MySQL:根据第二个 table 列中的值检查一个 table 中的列数

MySQL: Check count of columns in one table against value in column of second table

虽然这听起来与 this post 相似,但涉及的内容更多一些。我想要做的是检查 table 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);

我只需要 true/false return,但我卡住了。有人能指出我正确的方向吗?

truefalse 在数字上下文中充当 10。因此,您可以对 isComplete 列求和并将其加入 table2:

SELECT table2.*
FROM   table2 t2
JOIN   (SELECT   id, SUM(iscomplete) AS sic
        FROM     table1
        GROUP BY id) t1 ON t2.id = t1.id AND t2.numjobs = t1.sic

如果列isComplete的数据类型是BOOLEANINTEGER01)那么你需要检查总和专栏:

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)

将计算为 01

参见demo
您的示例数据的结果:

| result |
| ------ |
| 0      |