Выбор конкретных строк - PullRequest
       2

Выбор конкретных строк

0 голосов
/ 22 октября 2011

Моя таблица выглядит следующим образом:

+-------+------+------+------+
| index | col1 | col2 | text |
+-------+------+------+------+
|   1   |  1   |  1   | txt1 |
|   2   |  1   |  2   | txt2 |
|   3   |  1   |  3   | txt3 |
+-------+------+------+------+
|   4   |  2   |  1   | txt4 |
|   5   |  2   |  2   | txt5 |
|   6   |  2   |  3   | txt6 |
|   7   |  2   |  4   | txt7 |
|   8   |  2   |  5   | txt8 |
+-------+------+------+------+
|   9   |  3   |  1   | txt9 |
|   10  |  3   |  2   | txt10|
|   11  |  3   |  3   | txt11|
+-------+------+------+------+

Мне нужен запрос для получения данных От (col1 = 1 и col2 = 2) до (col1 = 3 и col2 = 1), например:

+-------+------+------+------+
|   2   |  1   |  2   | txt2 |
|   3   |  1   |  3   | txt3 |
|   4   |  2   |  1   | txt4 |
|   5   |  2   |  2   | txt5 |
|   6   |  2   |  3   | txt6 |
|   7   |  2   |  4   | txt7 |
|   8   |  2   |  5   | txt8 |
|   9   |  3   |  1   | txt9 |
+-------+------+------+------+

Есть ли способ сделать выше?

Ответы [ 2 ]

0 голосов
/ 22 октября 2011

Еще один отличный способ:

select * 
from `yourTable` where 
(
   (col1= 1 AND col2 >= 2) OR
   (col1= 3 AND col2 <= 1) OR
   (col1 NOT IN ( 1, 3 ))
) AND
col1 BETWEEN 1 AND 3
0 голосов
/ 22 октября 2011
SELECT *
  FROM yourTable
 WHERE `index` between (SELECT min(`index`) FROM yourTable WHERE (col1 = 1 and col2 = 2))
                   and (SELECT max(`index`) FROM yourTable WHERE (col1 = 3 and col2 = 1))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...