在SELECT MIN()子查询中忽略了MySQL WHERE子句

时间:2017-09-22 17:13:59

标签: mysql select subquery

我正在运行此查询:

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行,因此第二个子句应该过滤掉大多数只留下一个,但不会忽略它。

为什么呢?我试图用不同的子查询进行结构,但我不需要我得到的结果。

1 个答案:

答案 0 :(得分:0)

由于列prop_numero不是一个键列,你还需要将prop_fase_id = 2添加到WHERE,即

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
) AND prop_fase_id = 2;