sql >> Database teknologi >  >> RDS >> Mysql

Sådan vælger du poster én efter én uden at gentage

Da SELECT er en atomoperation, tror jeg ikke, der er en nem løsning. Jeg ser også to forskellige problemer, der skal løses:

at vælge en enkelt række uden at gentage en vist. Dybest set skal du gemme den sidste linje vist et sted. Hvis du har et program, der gemmer den aktuelle tilstand, kan det være en mulighed at gemme det som en ekstern variabel. Den skitserede løsning er udført i MySQL 5.0+:

Forbered først en sætning, der vil blive udført senere, og indstil en startposition for forespørgslen:

PREPARE STMT FROM 'SELECT id, name FROM customer LIMIT ?, 1';
SET @pos = 0;

Du vil måske tilføje en standardbestilling for at få et pålideligt resultat. Hver gang du vil have en enkelt række, skal du udføre sætningen ved at

EXECUTE STMT USING @pos; 
SELECT count(*) FROM customer INTO @max; 
SET @pos=(@pos+1)%@max;

Den anden ting er, at du vil læse en tilfældig position. Den eneste løsning, som jeg ser lige nu, er at oprette en midlertidig tabel, der enten indeholder indholdet fra kunden ordnet tilfældigt, eller at du opretter en midlertidig tabel med alle numre fra 0[email protected] og aflæs den aktuelle position i hovedtabellen fra den midlertidige tabel. Hvis du har et program uden for MySQL, kan der være mere elegante måder at løse dette på.



  1. Brug af INSERT INTO fra SQL Server til at ændre Salesforce-data

  2. PostgreSql INDSÆT FRA VÆLG RETURNERING ID

  3. Hvordan binder man parametre til en rå DB-forespørgsel i Laravel, der bruges på en model?

  4. Er Intel dømt i serverens CPU-plads?