我正在运行此查询:
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行,因此第二个子句应该过滤掉大多数只留下一个,但不会忽略它。
为什么呢?我试图用不同的子查询进行结构,但我不需要我得到的结果。
答案 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;