我有 2 个表,即: 1.下载门票 2.兑换门票
每个表都有“ticketid”属性。
我想找到下载票但没有兑换票的人 - 本质上,找到非重复(唯一)的票证。
我的查询(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/