我有一张叫做书籍的桌子
books
- bookid
- userid(fk)
- bookname
我有一张名为付费的表
paid
- paidid(pk)
- userid(fk)
- link
- bookid(fk)
我的查询:
SELECT *
FROM books,paid
WHERE books.bookid = paid.bookidfk
AND books.useridfk = '$userid'";
仅显示已付费的记录,但即使没有付费,我仍希望显示用户的所有图书。
答案 0 :(得分:1)
听起来你正在寻找outer join
:
select *
from books b
left join paid p on b.bookid = p.bookidfk
where b.useridfk = '$userid';
答案 1 :(得分:0)
您可以使用LEFT JOIN返回用户的所有图书以及付费数据(如果有)。 ANSI 92语法:
SELECT *
FROM books
LEFT JOIN paid ON books.bookid = paid.bookidfk
WHERE books.useridfk = '$userid';
我建议您避免在生产代码中使用*
简写,而是指定所需的列列表。