从具有多个条件的两个MySQL表中进行选择的最佳方法

时间:2016-04-17 01:00:44

标签: mysql select join subquery

给出两个MySQL表:

member: id, status, name, type
serial: id, serial, description

我想选择member.status =“2”的ID和serial = ID为指定值的任何序列。

换句话说,给定一个ID,我想找到与ID相关联的不同序列号,然后返回具有该序列号的所有ID - 但仅限于它们的状态为“2”。

我认为我不想要JOIN或UNION。我可能想选择serial.id,其中serial = ANY(选择serial其中serial.id =“value”) - 但我无法弄清楚如何要求member.status =“2”。

我该怎么做?

感谢。

1 个答案:

答案 0 :(得分:0)

我认为以下内容应该有效。使用子查询查找与指定serial关联的所有id个数字,然后查找id位于子查询结果中的所有serial;在外部查询中添加内部联接以将statusid匹配。

SELECT m.id
  FROM member m
  JOIN serial s
    ON s.id = m.id
  WHERE s.serial IN
    (SELECT serial
      FROM serial
      WHERE id = :search_id) ids
    AND m.status = '2';