我有2张桌子:
1.下载门票
2.兑换机票

每个表都具有“ ticketid”属性。

我想找到下载了票证但没有兑现票证的人-本质上是找到非重复的(唯一)票证ID。

我的查询(PHP)如下:

$sql = "
SELECT ticketid
FROM (
  SELECT ticketid
  FROM downloadedtickets
  UNION ALL
  SELECT ticketid
  FROM redeemedtickets
)
GROUP BY ticketid
HAVING COUNT(*) = 1";


我没有得到任何输出。

最佳答案

做到这一点的一种好方法是左连接,并测试NULL。

SELECT d.ticketid
  FROM downloadedtickets d
  LEFT JOIN redeemedtickets r USING(ticketid)
 WHERE r.ticketid IS NULL


LEFT JOIN操作为每个下载的票证及其赎回创建一个结果行。在没有兑换的地方,redeemed.ticketid为NULL,因此此查询使用WHERE仅选择那些项目。

关于php - 从2个MySQL表中选择非重复记录,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/28620079/

10-10 06:37