【发布时间】:2017-09-22 17:13:59
【问题描述】:
我正在运行这个查询:
SELECT prop_numero, prop_id, prop_fase_id
FROM propiedades
WHERE prop_numero = (
SELECT MIN(prop_numero)
FROM propiedades
WHERE prop_numero > 11 AND prop_fase_id = 2
);
得到这个:
| prop_numero | prop_id | prop_fase_id |
|-------------|---------|--------------|
| 111 | 166 | 1 |
|-------------|---------|--------------|
| 111 | 233 | 6 |
|-------------|---------|--------------|
| 111 | 657 | 2 |
|-------------|---------|--------------|
| 111 | 658 | 4 |
|-------------|---------|--------------|
我只是期待这个:
| prop_numero | prop_id | prop_fase_id |
|-------------|---------|--------------|
| 111 | 657 | 2 |
|-------------|---------|--------------|
并非总是如此,但有时第二个 WHERE 子句 (prop_fase_id = 2) 会被忽略。子查询的第一个 WHERE 子句发现多于 1 行是正常的,因此第二个子句应该过滤掉大部分,只留下一个,但不,它被忽略了。
为什么?我尝试使用不同的子查询进行结构化,但我没有得到我需要的结果。
【问题讨论】:
-
忽略是什么意思?解释你想要达到的目标,如果可能的话,说明表格描述和一些示例数据。
-
谢谢胡安。我的意思是它不会过滤掉 prop_fase_id 列中没有“2”的行。我会发布一些数据。
-
我认为您需要更多地解释您想要的结果。例如,尚不清楚您为什么使用 min() 。子查询将解析为 prop_numero,在本例中为 111。但主查询将显示在此示例中 prop_numero 为 111 的所有记录,即所有记录。如果您只想要一个结果,则主查询的条件应该是 id 而不是 prop_numero。