Gat*_*oyu 5 mysql select intersect
我有这张桌子:
+----+-----------+-------+
| id | client_id | is_in |
+----+-----------+-------+
| 1 | 1 | 0 |
+----+-----------+-------+
| 2 | 2 | 0 |
+----+-----------+-------+
| 3 | 1 | 1 |
+----+-----------+-------+
| 4 | 2 | 1 |
+----+-----------+-------+
| 5 | 3 | 1 |
+----+-----------+-------+
| 6 | 3 | 1 |
+----+-----------+-------+
| 7 | 1 | 0 |
+----+-----------+-------+
| 8 | 4 | 0 |
+----+-----------+-------+
| 9 | 4 | 0 |
+----+-----------+-------+
Run Code Online (Sandbox Code Playgroud)
而且我需要得到'is_in'至少等于1的客户端数量,并且从未让'is_in'等于0(在这种情况下,一个是client_id 3).
为此,我提出了两个问题:
SELECT client_id FROM foo WHERE is_in = 1;
Run Code Online (Sandbox Code Playgroud)
和
SELECT client_id FROM foo WHERE is_in = 0;
Run Code Online (Sandbox Code Playgroud)
我计划在它们之间进行INTERSECT,这样我就可以得到两个选项之间的公共条目,所以我只需要做"is_in = 1的客户端数量" - "计数(相交结果)".
但是INTERSECT不能和MYSQL一起使用,在这种情况下是否有INTERSECT的替代方案或者更简单的方法来获得我需要的东西(我觉得我做的很复杂).
谢谢.
SELECT id, client_id FROM foo WHERE is_in = 1 AND client_id NOT IN (SELECT client_id FROM foo WHERE is_in = 0)
Run Code Online (Sandbox Code Playgroud)
或者,如果您只需要客户号码:
SELECT DISTINCT client_id FROM foo WHERE is_in = 1 AND client_id NOT IN (SELECT client_id FROM foo WHERE is_in = 0)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
80 次 |
| 最近记录: |