php - 从 2 个 MySQL 表中选择非重复记录

标签 php mysql sql duplicates

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

相关文章:

php - Mysql 连接表有 2 个外键与同一个表

SQL 条件 JOIN 列

java - SQL异常Java程序抛出SQL异常SQL状态: 42X01 Error Code: 20000?

java - 通过php检索sql数据库中的一行并将输出转换为android应用程序中的textView

mysql - 如何配置 MySQL 将数据保存在另一个卷上?

php - 在Mac OS X上从PHP调用 'Host key verification failed.'时,我不断收到 `ssh`

mysql - 使用聚合函数时从 hibernate 中的多个表中选择列

java - 使用Java程序创建Oracle模式

php - 保护 PHPBB3 板免受黑客攻击的好方法?

php - 在 Woocommerce 商店页面的类别列表中隐藏产品类别