代码之家  ›  专栏  ›  技术社区  ›  m1k3y3

mysql:把所有的会议记录都记录下来,它的父级是可用的,但不关心它自己是否可用?

  •  0
  • m1k3y3  · 技术社区  · 14 年前

    如何选择符合以下条件的所有记录:

    记录所有会议记录,其父级可用或没有父级,但不关心是否可用?

    table people:  
    id, name, address, meeting_id, available, parent_id
    
    3 回复  |  直到 14 年前
        1
  •  1
  •   Roopesh Shenoy    14 年前
    select * from people outt
      where meeting_id = x and
      (parent_id is null or exists (select 1 from people inn where inn.id = outt.parent_id and available = 1))
    
        2
  •  1
  •   Cem Kalyoncu    14 年前

    未测试,请尝试。如果没有父级合并,将选择第二个参数并使用自动1。

    SELECT * FROM people 
      WHERE 
        meeting_id=x AND 
        ( COALESCE( (SELECT available FROM people AS parent WHERE id=parent_id), 1) )
    
        3
  •  0
  •   Kel    14 年前

    您可以使用join:

    SELECT
      child.*,
      parent.name
    FROM
      people child
    LEFT JOIN
      people parent on (child.parent_id = parent.id)
    WHERE
      (parent.available = 1 or parent.id IS NULL) AND
      child.meeting_id = x;
    

    http://dev.mysql.com/doc/refman/5.0/en/join.html 详情