0

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

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

我数据库中的成员帐户有两个表。简介和成员。个人资料包括他们的职位、公司等详细信息,然后会员存储他们的 MD5 密码、全名和 cookie 令牌。现在,两者都有一个状态列。个人资料一有三个选项:不,需要照片和完成。成员状态栏还有另外三个:非活动、活动和终止。我需要一个可以选择的命令

from profile where status = 'completed' and members where status = 'active'

我怎样才能做到这一点?所以查询将随机选择六个拥有活跃和完整个人资料的成员?先感谢您!

4

4 回答 4

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'
于 2013-05-25T16:28:35.367 回答
0

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

SELECT 
    * 
FROM 
    profile,
    members
WHERE 
    profile.membersid = members.id
AND profile.status = 'completed' 
AND members.status = 'active'
ORDER BY 
    RAND() 
LIMIT 6
于 2013-05-25T16:25:18.723 回答
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

于 2013-05-25T16:26:07.027 回答
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

于 2013-05-25T16:26:25.577 回答