我正在为朋友构建一个小型数据库应用程序,其中表1是联系人,表2是用户。我可以在两者上找到电子邮件(一个作为登录用户,另一个作为联系人的所有者)
SELECT *
FROM contacts
WHERE contacts.username = users.email
我尝试显示用户名等于已登录用户(电子邮件)的所有联系人字段
非常感谢您!
答案 0 :(得分:0)
尝试以下方法。另外,我建议您学习SQL中的联接。
SELECT *
FROM contacts
INNER JOIN
users on contacts.username = users.email
答案 1 :(得分:0)
听起来您正在尝试JOIN
两个表在一起。理想情况下,您不想将电子邮件用作表的主键(数据越小,JOIN
越快);更好的选择是向“联系人”和“用户”表都添加一个自动递增的ID(整数),并将其设置为主键(唯一标识符)。连接整数要快得多,因为整数是每行4个字节,而字符串(在MySQL中是每个字符长度1(latin1编码)+1个字节)。
无论如何,回到最初的问题。我相信您要查询的查询(MySQL语法)是:
SELECT c.Id, c.Col1, u.Col2, ...
FROM contacts AS c
INNER JOIN users AS u ON u.email = c.username
此外,我会避免使用*
,因为它会稍微降低查询速度。相反,尝试指定所需的确切列。
答案 2 :(得分:0)
使用内部联接:
SELECT *
FROM contacts as c
INNER JOIN
users as u on u.email = c.username