试试这个:
SELECT *
FROM person
WHERE (column1 <> 0 + column2 <> 0 + column3 <> 0 +
column4 <> 0 + column5 <> 0 + column6 <> 0
) > 1;
要么
SELECT p.*
FROM person p
INNER JOIN (SELECT A.key
FROM (SELECT p.key, p.column1 AS columnData FROM person p WHEN p.column1 <> 0
UNION ALL
SELECT p.key, p.column2 AS columnData FROM person p WHEN p.column2 <> 0
UNION ALL
SELECT p.key, p.column3 AS columnData FROM person p WHEN p.column3 <> 0
UNION ALL
SELECT p.key, p.column4 AS columnData FROM person p WHEN p.column4 <> 0
UNION ALL
SELECT p.key, p.column5 AS columnData FROM person p WHEN p.column5 <> 0
UNION ALL
SELECT p.key, p.column6 AS columnData FROM person p WHEN p.column6 <> 0
) AS A
GROUP BY A.key
HAVING COUNT(*) > 1
) AS A ON p.key = A.key;