Соответствие строк без фильтрации (SQL) - PullRequest
2 голосов
/ 21 мая 2009

У меня есть таблица со свойствами некоторых продуктов:

table properties(
  prop_id int,
  product_id int
)

Мой вопрос: возможно ли выбрать свойства, которые соответствуют, не фильтруя их из результата? Например:

select property_id from properties WHERE property_id IN(1,3,5);

Вы получаете только строки, соответствующие 1,3,5. Мне нужны все строки, но с информацией о том, какие строки соответствуют моим критериям. Я не хочу использовать «СОЮЗ».

Спасибо за помощь.

Ответы [ 4 ]

6 голосов
/ 21 мая 2009

У меня нет опыта работы с MySQL, но при условии, что он поддерживает оператор case (или что-то аналогичное), вы можете сделать это:

select
    prop_id,
    product_id,
    (case when prop_id in (1, 3, 5) then 1 else 0 end) as matches_criteria

from properties
2 голосов
/ 21 мая 2009

Вы можете использовать оператор case:

SELECT 
  prop_id, 
  product_id, 
  (CASE 
    WHEN property_id IN(1,3,5) THEN 1 
    ELSE 0 
  END)
FROM  properties;

http://dev.mysql.com/doc/refman/5.0/en/case-statement.html

1 голос
/ 21 мая 2009

левое внешнее соединение

select
    parent.name
        ,child.name
    from parent
        left outer join child on parent.familyid=child.familyid

перечислит всех родителей, независимо от того, есть ли у них дети

0 голосов
/ 21 мая 2009
SELECT
    IF (property_id IN (1, 3, 5), 1, 0) AS matched
FROM
    properties;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...