我很难理解mySQL上的连接,我找不到任何类似的例子可以使用。
假设我有两个表:users
和users_info
。
在用户中我有id
,email
和password
字段,而在users_info
我有他们的所有信息,例如name
,{{1} },surname
等
所以,如果我找到这样的用户:
street
和他们的信息如下:
SELECT * FROM users WHERE id = 43
我基本上会得到2个结果和2个表。
我现在明白我需要使用连接才能将它们放在一起,但我无法弄明白。
任何帮助?
答案 0 :(得分:2)
似乎users
和user_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