基本加入mysql

时间:2013-02-07 10:38:40

标签: mysql sql join

我很难理解mySQL上的连接,我找不到任何类似的例子可以使用。

假设我有两个表:usersusers_info

在用户中我有idemailpassword字段,而在users_info我有他们的所有信息,例如name,{{1} },surname

所以,如果我找到这样的用户:

street

和他们的信息如下:

SELECT * FROM users WHERE id = 43

我基本上会得到2个结果和2个表。

我现在明白我需要使用连接才能将它们放在一起,但我无法弄明白。

任何帮助?

3 个答案:

答案 0 :(得分:2)

似乎usersuser_info两个表都由列id彼此相关,因此您需要使用此列加入它们,如下所示:

SELECT 
  u.id,
  u.email,
  u.password,
  i.name, 
  i.surname, 
  i.street
FROM users           AS u
INNER JOIN user_info AS i ON u.id = i.id;

这只会选择字段id, email, ... etc,如果要从两个表中选择所有列,请使用SELECT *

SELECT *
FROM users           AS u
INNER JOIN user_info AS i ON u.id = i.id;

如果要输入id并获取特定用户的所有这些数据,请在查询末尾添加WHERE子句:

SELECT *
FROM users           AS u
INNER JOIN user_info AS i ON u.id = i.id
WHERE u.id = 43; 

有关JOIN的更多信息,请参阅以下内容:

答案 1 :(得分:0)

你也可以这样做:

SELECT users.*, users_info.*
FROM users, users_info
WHERE users.id = users_info.id AND users.id = 43;

这意味着: “从users表中获取所有列,users_info表中的所有列,其中用户的id列和users_info的id列彼此对应”

答案 2 :(得分:0)

这是一个例子

SELECT * FROM users u
INNER JOIN users_info i
ON u.id=i.id

这意味着,您正在加入users table和users_info表

例如

用户

id     name
----   -------
 1      abc
 2      xyz

users_info

id     email 
---    ------
 1      abc@aaa.com
 2      xyz@aaa.com

查询将返回

id    name   email
---   -----  -------
 1     abc    abc@aaa.com
 2     xyz    xyz@aaa.com

Here's a nice tutorial