Mysql IF EXIST应该用于此查询吗?

时间:2010-04-27 01:52:55

标签: mysql

select social_members.* 
     , social_mcouple.* 
 WHERE m_id = '".$_SESSION['userid'] . "' 
   AND c_id = '".$_SESSION['userid'] . "'

从social_members选择所有字段。*如果social_mcouple.c_id = $ _SESSION ['userid'],则选择social_mcouple。*中的所有字段。这可以通过IF EXIST完成,如果是这样的话。感谢

1 个答案:

答案 0 :(得分:2)

如果我能够正确地对待你,那么外部联接在这里会更好。

SELECT social_members.*
     , social_mcouple.* 
  FROM social_members 
  LEFT OUTER JOIN social_mcouple 
    ON social_members.m_id=social_mcouple.c_id 
 WHERE m_id='".$_SESSION['userid']."'

这将检索每个成员的行以及 social_mcouple 中的任何相应行。如果 social_mcouple 表中没有对应的行,则结果中的所有social_mcouple。*行都将为NULL。

根据您的确切需求以及两个表之间的关系,您可以更好地将其作为两个查询运行,一个用于从social_members检索匹配的行,另一个用于从social_mcouple检索行。无论是采用外连接还是两个单独的查询,都将取决于您想要返回的数据的“形状”。

以防万一,您认为根据数据不可能返回不同数量的列。 (例如,如果没有适用的social_mcouple行,则只有social_members列。)