给mysql查询

时间:2011-04-25 10:30:01

标签: mysql

我有两个名为products的产品和movingprod。产品主键是moveprod表的外键。

这是产品表结构 的的productid, 用户身份, PRODNAME, manfname 即可。 其中userid为空,用于显示所有用户的所有记录

这是moveprod表结构 ID
的productid, 用户身份, moved_date

但是,如果任何用户为其列表删除了一个产品复制未移动到具有productid和session userid的movingprod表。

所以我想要选择产品表中的产品,但是如果此产品位于带有特定用户ID的移动产品表中。如果该用户是会话用户ID,则该产品不会显示为会话用户ID,而是显示给其他用户ID。

2 个答案:

答案 0 :(得分:0)

Select *
from product p,
    movedproduct mp
where p.productid = mp.productid
    and p.userid != "sessionid"

答案 1 :(得分:0)

SELECT p.*
FROM product p
  LEFT JOIN movedproduct mp
    ON p.productid = mp.productid
      AND mp.userid = "sessionid"
WHERE mp.productid IS NULL

或者使用 NOT EXISTS

SELECT p.*
FROM product p
WHERE NOT EXISTS
  ( SELECT 1
    FROM movedproduct mp
    WHERE p.productid = mp.productid
      AND mp.userid = "sessionid"
  )

或使用 NOT IN

SELECT p.*
FROM product p
WHERE p.productid NOT IN
  ( SELECT mp.productid
    FROM movedproduct mp
    WHERE mp.userid = "sessionid"
  )