Toon posts:

[mySql] query uitvoeren op gedeelte database tabel

Pagina: 1
Acties:

Verwijderd

Topicstarter
Ik zou een query met een conditie moeten uitvoeren op een bepaald aantal rijen van een database tabel. Bijvoorbeeld op de eerste 50 rijen van een tabel bestaande uit 100 rijen.

De volgende query selecteert de eerste 50 rijen: SELECT * FROM table LIMIT 0, 50;
De volgende query voert een selectie met conditie uit op de hele tabel: SELECT * FROM table WHERE kolom='conditiewaarde';

Ik zou nu eigenlijk een query als SELECT * FROM table LIMIT 0, 50 WHERE kolom='conditiewaarde'; moeten kunnen uitvoeren waarbij de query met conditie dus uitgevoerd wordt op de eerste 50 rijen. Dit is echter geen geldige mysql syntax.

Weet iemand of dit mogelijk is mysql?

BTW de mysql versie die ik gebruik is 4.0.23

  • truegrit
  • Registratie: Augustus 2004
  • Laatst online: 01-05 20:11
volgens mij werkt het wel als je die limit er achter zet, dus zoiets als

select * from table where bla = 'sup' limit 0, 50;

hallo


  • Voutloos
  • Registratie: Januari 2002
  • Niet online
MySQL.com : update
Single-table syntax:

UPDATE [LOW_PRIORITY] [IGNORE] tbl_name
SET col_name1=expr1 [, col_name2=expr2 ...]
[WHERE where_definition]
[ORDER BY ...]
[LIMIT row_count]

Multiple-table syntax:

UPDATE [LOW_PRIORITY] [IGNORE] table_references
SET col_name1=expr1 [, col_name2=expr2 ...]
[WHERE where_definition]

The UPDATE statement updates columns in existing table rows with new values. The SET clause indicates which columns to modify and the values they should be given. The WHERE clause, if given, specifies which rows should be updated. Otherwise, all rows are updated. If the ORDER BY clause is specified, the rows are updated in the order that is specified. The LIMIT clause places a limit on the number of rows that can be updated.
Oftewel, limit kan je ook bij een UPDATE query gebruiken.

Had je het eigenlijk wel al geprobeerd, zo ja wat was de error?

[ Voor 10% gewijzigd door Voutloos op 14-04-2005 17:55 ]

{signature}


Verwijderd

Topicstarter
Ja de limit erachter plaatsen had ik reeds geprobeerd, ik had dit ook gelezen in de manual dat dit mogelijk was. Maar wanneer de limit erachter geplaatst wordt, wordt de limit uitgevoerd zeg maar op de resultaten van de query. Er worden dan maar 50 rijen teruggegeven die aan die conditie voldoen. maar mijn bedoeling is om alle rijen op te halen die aan die conditie voldoen binnen de eerste 50 rijen van de database tabel.
Dit is met limit niet mogelijk volgens mij.

  • bigbeng
  • Registratie: Augustus 2000
  • Laatst online: 26-11-2021
Daar heb je subqueries voor nodig en dus MySQL 4.1 of hoger. Het zou er dan als iets dergelijks uit komen te zien:
code:
1
2
3
4
5
6
7
8
select *
from tabel
where 
kolom = ' conditie' 
and
idwaarde IN (
   select idwaarde from tabel limit 0, 50
)

En het kan handig zijn om de subquery te ordenen op een waarde die jij wil.

Een andere mogelijkheid is met temporary tables werken. Je moet dan wel 3 queries maken:
1) creeer temp table
2) vul temptable met top 50
3) voer query op temptable uit met conditie
edit:

en als je het helemaal netjes wilt doen:
4) ruim tijdelijke tabel op

Kijk hier voor meer info over temptables.

[ Voor 10% gewijzigd door bigbeng op 14-04-2005 23:21 ]