标签:JOIN users posts comments 混合 user MySQL id 小记
混合表
继续上次的内容
新建一个表posts,将上次的users表中的id作为posts的外键
CREATE TABLE posts(
id INT auto_increment,
user_id INT,
title VARCHAR(100),
body text,
publish_date DATETIME DEFAULT CURRENT_TIMESTAMP, #时间戳的默认值
PRIMARY KEY(ID),
FOREIGN KEY(user_id) REFERENCES users(id) #★
);
插入了几条记录,
通过主键将他们关联起来
SELECT users.first_name, users.last_name, posts.title, posts.publish_date
FROM users
INNER JOIN posts
ON users.id = posts.user_id
ORDER BY posts.title;
再新建一个评论表,与使用者和帖子联系起来
CREATE TABLE comments(
id INT AUTO_INCREMENT,
post_id INT,
user_id INT,
body TEXT,
publish_date DATETIME DEFAULT CURRENT_TIMESTAMP,
PRIMARY KEY(id),
FOREIGN KEY(post_id) REFERENCES posts(id),
FOREIGN KEY(user_id) REFERENCES users(id)
);
插入几条记录
INSERT INTO comments(post_id, user_id, body)
VALUES (1, 3, "1st comment by user_3"),
(2, 3, "2nd comment by user_3"),
(4, 5, "3rd comment by user_5"),
(3, 4, "4th comment by user_4");
连接多个表
SELECT
comments.body, posts.title,
CONCAT(users.first_name,'-',users.last_name) AS 'Name'
FROM comments
LEFT JOIN posts ON posts.id = comments.post_id
INNER JOIN users ON users.id = comments.user_id
ORDER BY posts.title;
为啥此时在右边加入会出现下面这种情况捏
SELECT
comments.body, posts.title, users.first_name
FROM comments
LEFT JOIN posts ON posts.id = comments.post_id
RIGHT JOIN users ON users.id = comments.user_id
ORDER BY posts.title;
各种JOIN之间的区别
这就需要了解一下各种JOIN之间的区别了, 网上有张图流传的较为广泛
以我建的两个表举例
comments表(下面统称为C表)
users表(下面统称为U表)
表C左连接表U,以左为主,则表示以表C为主,关联上表U的数据,查出来的结果显示左边的所有数据,右边显示的是和左边有交集部分的数据
SELECT
comments.id,comments.user_id,comments.body, users.last_name
FROM comments
LEFT JOIN users ON users.id = comments.user_id;
若是右接U表,则会是这样
标签:JOIN,users,posts,comments,混合,user,MySQL,id,小记 来源: https://blog.csdn.net/qq_39391544/article/details/121456422
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。