группировка IN оператор sql - PullRequest
2 голосов
/ 15 июня 2011

Допустим, у меня есть таблица с именем table1 и соответствующие ей столбцы, например, col1, col2, col3 и col4.

что будет эквивалентно:

-- note that the following query will not work
SELECT * 
  FROM table1 
 WHERE col1, col2 IN (SELECT col1, col2 
                        FROM table1 
                       WHERE col3 < 4)

Нужно ли объединять col1 и col2 в моей базе данных, чтобы это работало? Если я объединю col1 и col2 в col1_2, я смогу заставить работать вышеуказанный запрос, написав:

SELECT * 
  FROM table1 
 WHERE col1_2 IN (SELECT col1_2 
                    FROM table1 
                   WHERE col3 < 4)

Предложение IN прекрасно работает при использовании одного столбца. было бы хорошо, если бы я мог использовать его с несколькими столбцами без необходимости изменять базу данных.

Ответы [ 2 ]

3 голосов
/ 15 июня 2011
SELECT * from table1 t1, table1 t2
where t1.col1=t2.col1 and t1.COl2=t2.Col2 and t1.col3<4

попробуйте это

0 голосов
/ 15 июня 2011

Эквивалент того, что вы показали:

SELECT *
FROM table1 tb1
WHERE EXISTS
(
    SELECT *
    FROM table1 tb2
    WHERE 
        tb1.col1 = tb2.col1 and 
        tb1.col2 = tb2.col2 and
        tb2.col3 < 4
)

Однако этот запрос не имеет особого смысла, поскольку он эквивалентен

SELECT *
FROM table1 tb1
WHERE tb2.col3 < 4

Я просто предполагаю, что приведенный вами примерне очень хорошо продумано.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...