首页 > 解决方案 > 如何根据给定条件选择不同的记录?

问题描述

我在 MySQL 数据库中有下表:

| id | col | val |
| -- | --- | --- |
| 1  | 1   | y   |
| 2  | 1   | y   |
| 3  | 1   | y   |
| 4  | 1   | n   |
| 5  | 2   | n   |
| 6  | 3   | n   |
| 7  | 3   | n   |
| 8  | 4   | y   |
| 9  | 5   | y   |
| 10 | 5   | y   |

现在我想明确选择所有value相似 scol等于的记录y。我尝试了以下两个查询:

SELECT DISTINCT `col` FROM `tbl` WHERE `val` = 'y'
SELECT `col` FROM `tbl` GROUP BY `col` HAVING (`val` = 'y')

但这并没有按照我的预期进行。我希望结果如下所示:

| col |
| --- |
| 4   |
| 5   |

1也包含在我的查询结果中。谁能帮我建立正确的查询?据我了解,我可能需要创建一个派生表,但不能完全找出正确的路径。

标签: sql

解决方案


你很接近,第二个查询。相反,比较最小值和最大值:

SELECT `col`
FROM `tbl`
GROUP BY `col`
HAVING MIN(val) = MAX(val) AND MIN(`val`) = 'y';

推荐阅读