SQL SELECT * FROM 2个表

时间:2018-06-28 04:22:28

标签: sql select

我正在为朋友构建一个小型数据库应用程序,其中表1是联系人,表2是用户。我可以在两者上找到电子邮件(一个作为登录用户,另一个作为联系人的所有者)

SELECT *
  FROM contacts
 WHERE contacts.username = users.email

我尝试显示用户名等于已登录用户(电子邮件)的所有联系人字段

非常感谢您!

3 个答案:

答案 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