Identificeer waarden op basis van datum en limiet

Ik heb uitvoer in een lijst met waarden.

Name  Date of Entry
C1 - 1/1/2011
C3 - 3/3/2011
C2 - 2/2/2011    
C4 - 4/4/2011
C5 - 5/5/2011

Het aantal opgesomde lijsten is bijvoorbeeld 5, ik heb een maximum aantal van 2, dus alle C's groter dan 2 moeten worden uitgeschakeld en de C's die worden uitgeschakeld, zijn gebaseerd op de datum van invoer.

ie. take out the Cs that are older based on date (first entered into the system), in this case C1 and C2 should be enabled and C3, C4 & C5 should be disabled.

select * from table order by date; => This gives me C1,C2,C3,C4,C5.

select * from table order by date limit 2; => This gives me C1 and C2 which is great, but how do i know C3,C4,C5 need to be disabled.

Ik wil wel vaststellen dat C3, C4 en C5 moeten worden uitgeschakeld.

Is het mogelijk om te doen in een enkele query? Alle MySQL-ontwikkelaars geen hulp?

Bedankt.

1
Geen update, je moet alleen weten welke uitgeschakeld zijn.
toegevoegd de auteur Sharpeye500, de bron
Ja datums zijn uniek, in feite is de datetime 1/1/2011 10:10:12 dus er zal niet dezelfde datum zijn.
toegevoegd de auteur Sharpeye500, de bron
Wilt u alleen de namen selecteren van de rijen die moeten worden uitgeschakeld of wilt u een update uitvoeren op de tabel?
toegevoegd de auteur Mark Byers, de bron
Zijn de datums gegarandeerd uniek? Wat moet er gebeuren als er drie datums zijn '1/1/2011'? Twee van hen willekeurig verwijderen?
toegevoegd de auteur Mark Byers, de bron

1 antwoord

Ervan uitgaande dat de datum uniek is, probeer dit:

SELECT
    name,
    date,
    date >
    (
        SELECT MIN(date)
        FROM your_table
        WHERE date > (SELECT MIN(date) FROM your_table)
    ) AS disabled
FROM your_table
ORDER BY date
2
toegevoegd
Foutcode: 1235 Deze versie van MySQL biedt nog geen ondersteuning voor 'LIMIT & IN/ALL/ANY/SOME subquery'. Ik gebruik 5.2, ik denk niet dat dit gerelateerd is aan versie #, wat te maken kan hebben met de querysyntaxis.
toegevoegd de auteur Sharpeye500, de bron
Dit is heel dichtbij, maar het geeft me niet het juiste antwoord. 1/1/2011 2/2/2011 3/3/2011 4/4/2011 5/5/2011 Als min. Datum 1/1/2011 is, moet ik top 2 oftewel ophalen. 1/1/2011 en 2/2/2011 als ingeschakeld & moet u 3/3/2011,4/4/2011,5/5/2011 uitschakelen als uitgeschakeld. d.w.z. een weg van het markeren van 1 en 0 voor die ingangen via selecteer if (huidige rij's datum> min (datum), 1,0) uit tabel; d.w.z. combineer min (datum) en vergelijk datumwaarde, ik denk dat ik de logica krijg, niet zeker over de syntaxis.
toegevoegd de auteur Sharpeye500, de bron
dwz 1/1/2011 - 0 - ingeschakeld. 2/2/2011 - 0 3/3/2011 - 1 - uitgeschakeld. 4/4/2011 - 1 5/5/2011 - 1 als de uitvoer van de geselecteerde query.
toegevoegd de auteur Sharpeye500, de bron
Mark - Bedankt, jij bent de man!
toegevoegd de auteur Sharpeye500, de bron
@ Sharpeye500: Sorry, ik heb het niet eerder getest. Probeer mijn bijgewerkte antwoord. Ik heb het getest en het lijkt te werken.
toegevoegd de auteur Mark Byers, de bron