Mai mult
MySQL SELECTAȚI doar nu valori nule
Este posibil să se facă o instrucțiune select care durează doar NU valori NULE?
Acum eu sunt, folosind acest:
SELECT * FROM table
Și atunci am avea de a filtra valorile nule cu o bucla php.
Există o modalitate de a face:
SELECT * (that are NOT NULL) FROM table
?
Acum când am selectați * am val1,val2,val3,null,val4,val5,null,null, etc.... dar vreau doar pentru a obține valori care nu sunt nule în rezultatul meu. Este posibil acest lucru fără filtrare cu o buclă?
248
9
Ar trebui să utilizați
NU ESTE NUL
. (Comparația operatorii=
și<>
daNECUNOSCUT
cuNULL
pe fiecare parte a expresiei.)Doar pentru completitudine I'll menționăm că în MySQL puteți anula, de asemenea, a nul în condiții de siguranță egalitatea operator, dar acest lucru nu este standard SQL.
Editate pentru a reflecta comentarii. Se pare ca masa ta ar putea să nu fie în prima formă normală, caz în care schimbarea structurii poate face sarcina mai ușoară. O serie de alte moduri de a face asta, deși...
Dezavantajul de mai sus este că acesta scanează masă de mai multe ori, o dată pentru fiecare coloană. Care ar putea fi evitate de mai jos, dar nu am't testat acest lucru în MySQL.
Puteți filtra rândurile care conțin o valoare NULĂ într-o anumită coloană:
Dacă doriți pentru a filtra rândurile care conțin un nul în orice coloană, apoi încercați acest lucru:
Update: Bazat pe comentariile tale, poate doriți acest lucru?
Și nu au fost de acord cu Martin că, dacă aveți nevoie pentru a face acest lucru, atunci probabil că ar trebui să-ți schimbi proiectarea bazei de date.
Singurul dezavantaj al acestei abordări este că puteți compara doar 5 coloane, după care rezultatul va fi întotdeauna false, așa că nu compara doar câmpurile care pot fi
NULL
.Am găsit această soluție:
Această interogare select ultima not null valoare pentru fiecare coloană.
Exemplu
Dacă aveți un tabel:
veți obține:
Interogare
Sper să te ajute.
Eu folosesc
\!
comanda în termen de MySQL pentru a grep afară valori NULE de coajă:Aceasta funcționează cel mai bine cu o buna
.meu.cnf
în cazul în care dumneavoastră de baze de date/nume de utilizator/parola sunt specificate. Așa trebuie să înconjoare "alege" cu\! mysql e " și " | grep -v NULL
.Următoarea interogare de lucru pentru mine
când am stabilit valoarea implicită a coloanei 'NUL' apoi
și atunci când am stabilit valoarea implicită nimic atunci
Da folosesc
NULL
în interogare ca aceasta de mai jos.MYSQL NU ESTE NULL CU se ALĂTURĂ ȘI SELECTAȚI, INTRODUCEȚI ÎN, ȘTERGE & OPERATOR LOGIC PLACE SAU NU