Visualizzazione dei risultati da 1 a 4 su 4
  1. #1

    [MySql] Operatore "IN" su chiave multipla

    Ho una tabella la cui chiave primaria è formata da due campi diversi:
    "key" e "blogid"
    Mi trovo ad avere delle coppie di questi valori, e vorrei fare una select dei record usando l'operatore IN.
    Solo che usando l'IN separato sui due campi, non funzionerebbe. L'unico modo per aggirare il problema ce ho pensato è

    SELECT *
    FROM tabella
    WHERE CONCAT(key,"-", blogid)
    IN (146-6095,9-13466, 372-8091)

    Però ovviamente perde ogni vantaggio degli indici e ci mette anni a eseguirla, come query.
    C'è un modo per far capire a MySql che voglio mantenere la corrispondenza facendo due IN separati?
    anija . è solo un blog
    www.anija.it

    «i'm a fountain of blood · in the shape of a girl»

  2. #2
    scusa, ma non ti funziona semplicemente:
    codice:
    ....
    WHERE key IN(146, 9, 372)
    AND blogid IN(6095, 13466, 8091)

    Il silenzio è spesso la cosa migliore. Pensa ... è gratis.

  3. #3
    Ma così troverebbe le coppie
    146-6095, 146-13466, 146-2091 ecc...

    o no?
    anija . è solo un blog
    www.anija.it

    «i'm a fountain of blood · in the shape of a girl»

  4. #4
    Una chiave primaria e' univoca. Ovvio che se l'accoppiata e' 1-100, 2-100, 3-100, 4-100, 1-101,2-101, 3-101 ecc... tirera' fuori tutte le combinazioni ammesse con key IN() AND blogid IN(). IN() valuta il suo contenuto come fosse in OR.

    La tua chiave primaria non e' certamente strutturata per utilizzare IN() su due campi diversi. Basterebbe un indice numerico auto_increment ed il blogid come attributo del record. Perche' anche chiave primaria???


    Il silenzio è spesso la cosa migliore. Pensa ... è gratis.

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.