首先,我很抱歉。这可能是一个相当基本的问题,但我对此很新,并且无法在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'
我怎样才能实现这一目标?那么查询将选择六个随机成员,他们有活跃和完整的个人资料?提前谢谢!
答案 0 :(得分:1)
首先,您需要在两个表中创建一个共享条目共享相同值的列。 Foreign Key
和Primary 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会在表(status
和ID
)中出现两个具有相同名称的字段的错误
还尝试对表和列使用反引号,尤其是在使用MySQL可能使用的名称时;例如status
和ID
。