Topic: få ut specifika rader ut mysql

Hur gör jag för att på ett enkelt sätt få ut några specifika rader ur en tabell.
de id som jag vill få ut ligger i en variabel, kommaseparerat. Eller måste jag köra en query för varje id?

finns det någon sql-sats som kan lösa detta, som nåt liknande denna:

$query = "SELECT id, rubrik FROM produkter WHERE id = 1,2,4,7"

Re: få ut specifika rader ut mysql

SELECT id, rubrik FROM produkter WHERE id IN(1,2,4,7)

"Programming is like sex: one mistake and you have to support it for the rest of your life."

Re: få ut specifika rader ut mysql

ah visste att det fanns någon sådan funktion men visste inte vad jag skulle söka efter smile

Re: få ut specifika rader ut mysql

Såg precis att den här tråden ligger i fel forum. Flyttar.

"Programming is like sex: one mistake and you have to support it for the rest of your life."

Re: få ut specifika rader ut mysql

Kennel wrote:
SELECT id, rubrik FROM produkter WHERE id IN(1,2,4,7)

Är det ngn skillnad på det där och:

SELECT id, rubrik FROM produkter WHERE field(id,1,2,4,7)

Re: få ut specifika rader ut mysql

Den där typen av SQL-fråga har jag aldrig sett. Är field en funktion eller?

"Programming is like sex: one mistake and you have to support it for the rest of your life."

Re: få ut specifika rader ut mysql

Tja, hur det fungerar har jag ingen aning om, bara att det fungerar smile Men det get nog exakt samma resultat som IN(1,2,4,7)...

Re: få ut specifika rader ut mysql

Jag kollade precis upp FIELD() i MySQL-manualen och det kan inte vara rätt.

FIELD(str,str1,str2,str3,...)
    Returns the index of str in the str1, str2, str3, ... list. Returns 0 if str is not found. FIELD() is the complement of ELT():

    mysql> SELECT FIELD('ej', 'Hej', 'ej', 'Heja', 'hej', 'foo');
        -> 2
    mysql> SELECT FIELD('fo', 'Hej', 'ej', 'Heja', 'hej', 'foo');
        -> 0

"Programming is like sex: one mistake and you have to support it for the rest of your life."

9 (edited by chacmool 2003-08-02 00:59)

Re: få ut specifika rader ut mysql

Jo, det där är väl precis det han ville åstadkomma?

De båda funkionerna ger exakt samma resultat iaf (testade nyss).

Re: få ut specifika rader ut mysql

Nej, det är det väl inte? Han har ett antal ID's och sen vill han selecta ut raderna som matchar dessa ID's. Jag förstår inte vad funktionen FIELD() har med det att göra.

field(id,1,2,4,7) kommer att returnera 1, 2, 3 och 4. Om id för den nuvarande raden är 1 kommer den returnera 1, om id är 2 kommer den returnera 2, om id är 3 kommer den returnera 0, om id är 4 kommer den returnera 3 osv.

"Programming is like sex: one mistake and you have to support it for the rest of your life."

11

Re: få ut specifika rader ut mysql

Man kan ju lägga allt i en variabel, eller om du vill hämta ett användarnamn:

<?
$anv = "pelle";
$task = "SELECT * FROM tbl_usr WHERE anv $pelle";
?>

Re: få ut specifika rader ut mysql

hmm... för att spinna vidare på det här problemet smile

jag har en liten sak där jag kommer ha ungefär 5 st id till 5 saker i en databas, och jag vill uppdatera dessa med olika värden på en och samma variabel ... är det möjligt att använda IN även på update, och då använda den både på WHERE men även SET ?

skulle bli en query istllet för minst 5 isåfall smile

13 (edited by Frank H 2003-12-19 16:21)

Re: få ut specifika rader ut mysql

tja ... pillrat lite nu ... och jag hittade inget sätt att mata in en array som invärden, dock så kunde jag utnyttja det faktum att jag bara gjorde en addition med 1 ... så då löste sig mitt problem ändå med bara en query smile

$sql = 'UPDATE `news` SET views = views +1 WHERE id IN ( 1, 2, 4 )';

funkar alldeles utmärkt för det syfte jag använder det i smile