[英]How to Join two tables and return all rows from both tables
我有两张桌子。 用户和书籍,我想加入这两个表并返回两个表的所有行。 中的公共列是'uid';
书籍的 sql 语句。
SELECT * FROM books ORDER BY TIME DESC;
从上面我得到 user_id 'uid' 并在单独的查询中使用它。
而对于用户。
SELECT * FROM users WHERE uid = '$uid';
我想最终得到如下内容,而不是从 table.books 和 table.users 进出数据库。
while($row = mysqli_fetch_array($query)){
echo $row[book_name];
echo $row[user_firstname];
}
谢谢。
您必须在数据库中查找 JOIN 的基础,以了解如何连接两个表以检索特定数据。
尝试这个:
SELECT *
FROM books b
INNER JOIN users u ON b.uid = u.uid
ORDER BY b.TIME DESC;
选择一个。 ,乙。 FROM 图书 a INNER JOIN 用户 b ON (a.id = b.uid)
尝试使用以下查询查询两个表中的所有数据,无需任何过滤
select * from Users u,Books b where u.user_id=b.uid
如果你给了 GROUP BY 或任何其他约束,那么在“Where”子句之后使用“and”marge条件。
这将返回书籍和用户的所有行
SELECT *
FROM books b
FULL OUTER JOIN users u ON b.uid=u.uid;
从books 中选择books.bookname,users.user_firstname 加入books.id=users.id 上的用户
试试这个它会起作用:
使用内连接
SELECT t1.*,t2.`user_firstname` FROM books t1
JOIN users t2 ON t2.`uid` = t1.`uid`
这个叫做FULL JOIN,可以在MySql中实现
SELECT *
FROM books AS b
LEFT JOIN users AS u ON b.uid = u.uid
UNION
SELECT *
FROM books AS b
RIGHT JOIN users AS u ON b.uid = u.uid
有订单
SELECT t.*
FROM (
SELECT *
FROM books AS b
LEFT JOIN users u ON b.uid = u.uid
UNION
SELECT *
FROM books AS b
RIGHT JOIN users AS u ON b.uid = u.uid
) t
ORDER BY t.TIME DESC;
SELECT b.*, u.uid
FROM books b
INNER JOIN users u ON b.uid = u.uid
ORDER BY b.TIME DESC;
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.