如果其他行具有公共属性,则设置标志
假设我有这些数据:
表项目
ID |
名称 | 标签 |
---|---|---|
1 |
例 | unique_tag |
2 |
FOO | 简单 |
42 |
BAR | 简单 |
3 |
BAZ | 你好 |
51 |
QUUX | 世界 |
我想得到所有这些行,并知道其他行是否使用了标记
SELECT id, name, tag, COUNT(*) OVER (PARTITION BY tag) > 1 AS flag FROM items
结果将是:
ID |
名称 | 标签 | 标志 |
---|---|---|---|
1 |
例 | unique_tag | 假 |
2 |
FOO | 简单 | 真正 |
42 |
BAR | 简单 | 真正 |
3 |
BAZ | 你好 | 假 |
51 |
QUUX | 世界 | 假 |
如果你的数据库没有 OVER 和 PARTITION,你可以使用它来产生相同的结果:
SELECT id, name, tag, (SELECT COUNT(tag) FROM items B WHERE tag = A.tag) > 1 AS flag FROM items A