我有一个名为“产品”的表,其中包含以下数据。
--------------------
| id | tag_name |
--------------------
| 1 | electronics |
| 1 | tv |
| 1 | lcd |
| 2 | tv |
| 2 | lcd |
| 3 | tv |
| 3 | lcd |
--------------------
所有产品都必须有一个“电子”标签,但很少有产品缺少该标签。根据我的问题上面的数据,我运行什么查询以便返回 ids 2 和 3,因为它们没有“电子”标签。
想到的2个解决方案是
使用 NOT IN -
select distinct id from products where id not in (select id from products where tag_name='electronics')
- 有几百万行,这是非常低效的第二种解决方案是拼凑一个脚本,该脚本选择所有不同的 ID,然后检查该 ID 是否存在“电子”标签,如果不存在则插入该行。
还有另一种更有效的方法来处理这个问题吗?(可能JOIN
在同一张桌子上使用 a)