SQL Impostazione di un flag se altre righe hanno una proprietà comune


Esempio

Diciamo che ho questi dati:

Articoli da tavola

id nome etichetta
1 esempio unique_tag
2 foo semplice
42 bar semplice
3 baz Ciao
51 quux mondo

Mi piacerebbe avere tutte quelle righe e sapere se un tag è usato da altre linee

SELECT id, name, tag, COUNT(*) OVER (PARTITION BY tag) > 1 AS flag FROM items

Il risultato sarà:

id nome etichetta bandiera
1 esempio unique_tag falso
2 foo semplice vero
42 bar semplice vero
3 baz Ciao falso
51 quux mondo falso

Nel caso in cui il tuo database non abbia OVER e PARTITION puoi usarlo per produrre lo stesso risultato:

SELECT id, name, tag, (SELECT COUNT(tag) FROM items B WHERE tag = A.tag) > 1 AS flag FROM items A