这是我在stackoverflow中的第一个问题,对我很好:)
我有一个具有列族的表,当我进行查询(带有where语句)时,我想将结果显示为一组具有相同族的行
例如,表为shop:
+----+--------+-------+
| id | family | money |
+----+--------+-------+
| 1 | 1 | 100 |
| 2 | 1 | 70 |
| 3 | 2 | 10 |
| 4 | 2 | 20 |
| 5 | 3 | 50 |
+----+--------+-------+
所以我想要在执行这样的查询时:
SELECT * FROM shop where money=100 --(adding to the query of course what's needed)
它将选择这两个:
+-----+----------+---------+
| id | family | money |
+-----+----------+---------+
| 1 | 1 | 100 |
| 2 | 1 | 70 |
+-----+----------+---------+
答案 0 :(得分:1)
您可以使用in
或exists
:
SELECT s.*
FROM shop
WHERE s.family IN (SELECT s2.family FROM shop s2 WHERE s2.money = 100);
答案 1 :(得分:1)
您可以将Correlated Subquery与Exists()
一起使用:
SELECT
t1.*
FROM shop t1
WHERE EXISTS (SELECT 1 FROM shop t2
WHERE t2.family = t1.family AND
t2.money = 100)