我正在研究的表格部分如下:
表:store_inventories
+---------+----------+-------+----------+
| stor_id | title_id | qty | minStock |
+---------+----------+-------+----------+
| 8042 | TC7777 | 630 | 630 |
| 8042 | TH1217 | 0 | 630 |
| 9012 | AK1231 | -100 | 13 |
| 9012 | AK4153 | 5 | 1 |
| 9012 | BU2075 | 39 | 7 |
| 7131 | AW1234 | 10277 | 2055 |
| 7131 | AW5678 | 13150 | 2630 |
| 7131 | BU1032 | 545 | 109 |
| 7131 | BU2075 | 35 | 7 |
如何从该表中选择 title_id,其条件同时满足(不是任一)stor_ids 9012 和 7131。
结果应该是
+----------+
| title_id |
+----------+
| BU2075 |
我尝试了内部联接和 using and 语句,但它们要么返回错误的结果,要么返回空集。
最佳答案
使用 WHERE
子句过滤 stor_ids,使用 HAVING
计算 WHERE
子句中返回的行的实例数。
SELECT title_id
FROM store_inventories
WHERE stor_ids IN (9012, 7131) --
GROUP BY title_id
HAVING COUNT(*) = 2
如果标题可以包含同一商店的多行,请使用DISTINCT
。
HAVING COUNT(DISTINCT stor_ids) = 2
这是一个Demo .
关于mysql - 仅当两行(不是任一行)都满足时才选择条件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48909617/