article文章表:
aid title content uid 1 文章1 文章1正文内容... 1 2 文章2 文章2正文内容... 1 3 文章3 文章3正文内容... 2 4 文章4 文章4正文内容... 4
user用户表:
uid username email 1 admin admin@5idev.com 2 小明 xiao@163.com 3 Jack jack@gmail.com
LEFT JOIN:
SELECT article.aid,article.title,user.username FROM article LEFT JOIN user ON article.uid = user.uid
aid title username 1 文章1 admin 2 文章2 admin 3 文章3 小明 4 文章4 NULL
RIGHT JOIN:
SELECT article.aid,article.title,user.username FROM article RIGHT JOIN user ON article.uid = user.uid
aid title username 1 文章1 admin 2 文章2 admin 3 文章3 小明 NULL NULL Jack
INNER JOIN:
SELECT article.aid,article.title,user.username FROM article INNER JOIN user ON article.uid = user.uid
aid title username 1 文章1 admin 2 文章2 admin 3 文章3 小明
SELECT...FROM table1 INNER | LEFT | RIGHT JOIN table2 ON conditiona
FROM左表(table1),JOIN右表(table2)
INNER JOIN (内连接): 取得两个表中存在连接匹配关系的记录,INNER可以省略。
LEFT JOIN (左连接): 取得左表(table1)完全记录,即使右表(table2)并无对应匹配记录。
RIGHT JOIN (右连接): 取得右表(table2)完全记录,即是左表(table1)并无匹配对应记录。
例子1:
$access = Db::table('qi_role_user')->alias('a')
->join('qi_role_menu b', 'a.role_id = b.role_id', 'INNER') //'INNER'为默认,可省略
->where('a.user_id',$uid)
->select();
例子2:
mysql中操作
SELECT * FROM qi_role_user LEFT JOIN qi_role_menu ON qi_role_menu.role_id = qi_role_user.role_id
WHERE qi_role_user.user_id = 1;