我有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/