mysql> describe posts;
+-------------+--------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+-------------+--------------+------+-----+---------+----------------+
| id | int(11) | NO | PRI | NULL | auto_increment |
| user_id | int(11) | NO | | NULL | |
| title | varchar(255) | NO | | NULL | |
| body | text | YES | | NULL | |
| created | datetime | YES | | NULL | |
| modified | datetime | YES | | NULL | |
| category_id | int(11) | NO | | NULL | |
| tags | varchar(50) | NO | | NULL | |
+-------------+--------------+------+-----+---------+----------------+
8 rows in set (0.00 sec)
mysql> describe users;
+----------+--------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+----------+--------------+------+-----+---------+----------------+
| id | int(11) | NO | PRI | NULL | auto_increment |
| username | varchar(255) | NO | UNI | NULL | |
| password | char(40) | NO | | NULL | |
| group_id | int(11) | NO | | NULL | |
| created | datetime | YES | | NULL | |
| modified | datetime | YES | | NULL | |
+----------+--------------+------+-----+---------+----------------+
6 rows in set (0.00 sec)
我正在尝试从posts表中选择列ID,标题和来自users表的用户名,其中posts.user_id = users.id。
如果我从帖子中选择user_id,我将只获得整数值。 但我想从users表中获取等效的varchar值。
这将是一个加入SQL查询。 我怎么能这样做?
提前致谢。
答案 0 :(得分:2)
这应该可以解决问题
SELECT p.id, p.title, u.UserName
FROM posts p
INNER JOIN users u ON p.user_id = u.id
或
SELECT p.id, p.title, u.UserName
FROM posts p,users u
WHERE p.user_id = u.id
或
SELECT p.id, p.title, (select u.UserName FROM users u WHERE p.user_id = u.id)
FROM posts p
按优先顺序
答案 1 :(得分:1)
您确实需要在两个表之间使用连接(很可能是inner join
,此处):
select posts.id, posts.title, users.username
from posts
inner join users on users.id = posts.user_id
有了这个,对于每个帖子,您将获得相应的用户信息 - 您可以将users
中的任何字段添加到查询的select
部分。
答案 2 :(得分:1)
尝试此查询:
SELECT Posts.ID, Posts.Title, Users.UserName
FROM Posts INNER JOIN Users ON Posts.User_ID = Users.ID
答案 3 :(得分:0)
试试这个:
select posts.id, title, username
from posts join users
on posts.user_id = users.id
如果列名不明确(例如,id),则可以在其前面加上表名,如上所示。