1

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

假设我有两个表:usersusers_info.

在用户中,我有id,emailpassword字段,而在users_info我有他们的所有信息,如name, surname,street等。

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

SELECT * FROM users WHERE id = 43

他们的信息是这样的:

SELECT * FROM users_info WHERE id = 43

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

我现在明白我需要使用 join 以便它们都在一起,但我就是想不通。

有什么帮助吗?

4

3 回答 3

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请参阅以下内容的更多信息:

于 2013-02-07T10:39:57.833 回答
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 列相互对应的行”

于 2013-02-07T10:43:07.343 回答
0

这是一个例子

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

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

例如

用户

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

用户信息

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

查询将返回

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

这是一个很好的教程

于 2013-02-07T10:43:32.753 回答