繁体   English   中英

如何连接两个表并返回两个表中的所有行

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM