我有两张桌子。首先是产品,第二是订单

产品

id |Product name

01 |Computer
02 |Mobile
03 |Tablet


和第二张桌子订购

p_id | username

02   | Joe
02   | Mike
01   | Joe
03   | Tomy


现在我想向用户展示那些尚未被用户购买的产品
假设登录用户名是Mike

$username = "Mike";
$get = mysqli_query($db, "SELECT e.id
FROM `products` AS e INNER JOIN `order` AS u ON u.p_id = e.id WHERE e.username != '$username' ");
echo mysqli_num_rows($get);

Result 3;


上面的查询计算用户名不是mike的所有订单并显示结果。.我只希望那些不是“ Mike”购买的产品列表

最佳答案

您将必须进行反加入

SELECT * FROM product p
WHERE NOT EXISTS (
   SELECT 1 FROM order o WHERE o.username = 'Mike' AND p.id = o.p_id
)


有关https://dev.mysql.com/doc/refman/5.7/en/exists-and-not-exists-subqueries.html的更多信息

关于mysql - 在联接查询中获取ID,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/45484750/

10-10 02:01