【问题标题】:Best way to select from two MySQL tables with multiple conditions从具有多个条件的两个 MySQL 表中进行选择的最佳方法
【发布时间】:2016-08-08 20:48:28
【问题描述】:

给定两个 MySQL 表:

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

我想选择其中 member.status = "2" 和 serial = ID 是指定值的任何序列的 ID。

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

我认为我不需要 JOIN 或 UNION。我可能想选择 serial.id where serial=ANY(select serial where serial.id="value") - 但我不知道如何要求 member.status =“2”。

我应该怎么做?

谢谢。

【问题讨论】:

  • 样本数据和期望的结果将有助于传达您想要做的事情。例如,id 是什么?会员还是连续剧?

标签: mysql select join subquery


【解决方案1】:

我认为以下应该有效。使用子查询查找与指定id关联的所有serial数字,然后查找serial在子查询结果中的所有ids;在外部查询中放置一个内部联接以匹配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';

【讨论】:

  • 不幸的是,它在应该至少有两条的地方找到了 0 条记录。
  • 你从子查询中得到了什么?
  • 我发现了问题。有一个失败案例,在某些情况下序列号为空,导致虚假匹配。现在工作正常;谢谢!!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-07-11
  • 2020-03-17
  • 2012-06-07
相关资源
最近更新 更多