Как выбрать все из запроса SQL, включая подзапрос - PullRequest
1 голос
/ 21 мая 2011

Я хочу выполнить запрос mySQL, который возвращает все результаты в таблице, но имеет дополнительный столбец, в котором есть значения «selected», если они соответствуют отдельному запросу. Например

| name |
|------|
| a    |
| b    |
| c    |

Я хочу иметь возможность возвращать следующее, когда я делаю запрос "выберите * из таблицы, где name = 'a';

| name | selected |
|------|----------|
| a    |  yes     |
| b    |          |
| c    |          |

То есть я также хочу знать, какие из них были исключены.

Ответы [ 3 ]

2 голосов
/ 21 мая 2011
select *
    , selected = case
        when exists (
            select *
            from table2 t2
            where t2.field = t1.field
                and ...etc.
        ) then 1 
        else 0
    end
from table t1
1 голос
/ 21 мая 2011

Где предложение ограничивает ваш набор строк, поэтому вы получаете только строки с именем 'a'. Чтобы получить их все, либо присоедините ограниченную таблицу обратно к себе, либо используйте IF без где:

SELECT *, IF( name='a', 'yes', '') AS selected
FROM table
0 голосов
/ 23 мая 2011

Тот, который работал для меня, был:

select a.*
    , name = case
        when 
           a.name = 'a'
         then 0 
        else 1
    end
as selected
from points as a
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...