我正在研究的部分内容如下:
table: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 |
我尝试了内连接和使用和语句,但它们返回错误的结果或空集。
答案 0 :(得分:1)
使用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。
答案 1 :(得分:1)
您可以尝试使用子查询连接:
SELECT a.title_id
FROM (select title_id
from store_inventories
where stor_id=9012) a
JOIN (select title_id
from store_inventories
where stor_id=7131) b
ON (a.title_id=b.title_id)