在MySQL查询中包含两个不同的表

时间:2013-05-25 16:22:34

标签: mysql

首先,我很抱歉。这可能是一个相当基本的问题,但我对此很新,并且无法在Google上找到答案。我有以下MySQL查询:

SELECT * FROM profile WHERE status = 'completed' ORDER BY RAND() LIMIT 6

我的数据库中的成员帐户有两个表。简介&成员。个人资料包括其职位,公司等详细信息,然后会员存储他们的MD5密码,全名和cookie令牌。现在,两者都有一个状态列。配置文件有三个选项:not,needphoto和completed。成员状态列还有另外三个:非活动,活动和终止。我需要一个会选择

的命令
from profile where status = 'completed' and members where status = 'active'

我怎样才能实现这一目标?那么查询将选择六个随机成员,他们有活跃和完整的个人资料?提前谢谢!

4 个答案:

答案 0 :(得分:1)

首先,您需要在两个表中创建一个共享条目共享相同值的列。 Foreign KeyPrimary Key

说两个表都有一个id列。

所以这是你的SQL:

  select * from profile as p and member as m where p.id=m.id and p.status='completed' and m.status='active'

答案 1 :(得分:0)

在不知道链接两个表的列的名称的情况下,我无法给出确切的查询,但这应该向您展示基本概念是什么。

SELECT 
    * 
FROM 
    profile,
    members
WHERE 
    profile.membersid = members.id
AND profile.status = 'completed' 
AND members.status = 'active'
ORDER BY 
    RAND() 
LIMIT 6

答案 2 :(得分:0)

你应该看看加入。

尝试类似:

SELECT * FROM profile p
 LEFT JOIN members m ON m.profile_id = p.id
WHERE p.status = "completed" and m.status = 'active'

您可能需要更改LEFT JOIN行,它取决于2个表之间的链接。它可能只是m.id = p.id

答案 3 :(得分:0)

SELECT p.* FROM `profile` AS p, `members` AS m WHERE p.`ID` = m.`ID` AND p.`status` = "completed" AND m.`status` = "active"

您可以在上面的一个查询中使用两个表。您可能需要添加列ID以将它们连接在一起。建议将这些作为主要内容。

请注意p.*是必要的,否则SQL会在表(statusID)中出现两个具有相同名称的字段的错误

还尝试对表和列使用反引号,尤其是在使用MySQL可能使用的名称时;例如statusID