Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to select only those rows which have more than one of given fields with values

Tags:

sql

select

mysql

Is there some elegant way to do that, without a big WHERE with lots of AND and OR? For example there are 4 columns: A, B, C, D. For each row the columns have random integer values. I need to select only those rows which have more than one column with a non-zero value. For example (1,2,3,4) and (3,4,0,0) should get selected, however (0,0,7,0) should not be selected (there are no rows that have zeros only).

PS. I know how this looks but the funny thing is that this is not exam or something, it's a real query which I need to use in a real app :D

like image 971
Eugene Avatar asked Feb 02 '26 23:02

Eugene


1 Answers

SELECT  *
FROM    mytable
WHERE   (0, 0, 0) NOT IN ((a, b, c), (a, b, d), (a, c, d), (b, c, d))

This I believe is this shortest way, though not necessarily the most efficient.

like image 165
Quassnoi Avatar answered Feb 05 '26 11:02

Quassnoi