匹配行而不进行过滤(SQL)

时间:2009-05-21 17:48:28

标签: sql mysql

我有一些包含某些产品属性的表格:

table properties(
  prop_id int,
  product_id int
)

我的问题是:是否可以选择匹配的属性而不从结果中过滤它们?例如:

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

您只能获得与1,3,5匹配的行。 我需要所有行,但有关于哪些行符合我的标准的信息。 我不想使用'UNION'。

感谢您的帮助。

4 个答案:

答案 0 :(得分:6)

我没有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

答案 1 :(得分:2)

您可以使用案例陈述:

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

答案 2 :(得分:1)

左外连接

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

将列出所有父母,无论他们是否有孩子

答案 3 :(得分:0)

SELECT
    IF (property_id IN (1, 3, 5), 1, 0) AS matched
FROM
    properties;