0
votes

Comparez SQL Sélectionner et trouvez les nouveaux enregistrements par date

J'ai une base de données où chaque jour une liste d'employés se fait insérer. C'est un serveur SQL 2008. Cela pourrait donc être que la liste est peut-être la même chose, mais elle pourrait également être qu'un nouvel employé a été ajouté. J'ai un champ avec le Temps-temps de la journée à partir de l'enregistrement, du nom et ainsi de suite. Voici la sélection simple: xxx

renvoie 853 lignes xxx

retourne 850 rangées

Comment puis-je obtenir le 3 rangées neuves entre ces deux dates? "numéro" est le pkure dans ce cas.


1 commentaires

Et si 3 nouveaux employés se sont joints entre les 2 dates?


4 Réponses :


1
votes

Utilisez la jointure gauche pour connaître les lignes manquantes

    select * from
    (
      SELECT timestamp, number, rhyth FROM employees WHERE timestamp = '2020-07-13'
    )A left join 
    (
      SELECT timestamp, number, rhyth FROM employees WHERE timestamp = '2020-07-10'
    )B on A.number=b.number where b.number is null


1 commentaires

Un JOOK complet est meilleur. Il n'y a aucune garantie qu'une seule table a tous les employés



0
votes

Que diriez-vous des inégalités?

SELECT timestamp, number, rhyth
FROM employees
WHERE timestamp > '2020-07-10' AND timestamp <= '2020-07-13'


0 commentaires

0
votes

Si vous souhaitez rechercher des employés qui n'existaient pas avant, utilisez n'existe pas code>: xxx pré>

supprimer p> xxx pré >

Si vous ne voulez pas restreindre cela à une date donnée, mais voir tous les employés avec leur première entrée. P>

Une autre option: p>

select number, min(timestamp)
from employees
group by number
--having min(timestamp) = '2020-07-13';


0 commentaires

2
votes

Le plus facile serait probablement d'utiliser dans code>: xxx pré>

Vous pouvez également utiliser sauf code>: p>

SELECT number FROM employees WHERE timestamp = '2020-07-13'
EXCEPT
SELECT number FROM employees WHERE timestamp = '2020-07-10'


0 commentaires