2015-11-28 77 views
0

我在表中有2行。每行包含一個主鍵,和額外的5列,它的值可以是1,或0用於查找多列第一個非零的SQL語句SQL語句

因此,例如,其中的一列是「TermsAccepted」,另一個爲「CopyrightAcknowledged」

行1的「條款已接受「可能爲0或1,而第2行的」接受條款「也可能爲0或1。

我想知道是否至少有一行爲每列包含1。我必須使用5個子查詢來做到這一點(我想只有一行返回,告訴我是否有任何列中有1)。只要至少有一列,那對我來說無關緊要。

希望這是有道理的。我怎麼能寫一個查詢來做到這一點?我正在使用SQL Lite。我有點卡住了。非常感謝!

注意:我可以直接返回兩個記錄,然後使用Swift(編程語言)來解析每一行中的每列並查找0或1,但我希望如果可能的話,使用SQL中的某些東西使其更優雅。

+0

你有沒有試過MySQL的NULLIF? http://dev.mysql.com/doc/refman/5.7/en/control-flow-functions.html#function_nullif – Hirbod

+0

嗯不,我沒有,也沒有想到這一點 - 現在看..除非你有一個想法的想法的查詢 – NullHypothesis

+0

看看這裏,如果我理解正確,它應該適合您的需求 http://stackoverflow.com/questions/19282957/get-the-minimum-non-zero-value-across -multiple-columns – Hirbod

回答

0

我認爲這應該有效,但如果任何人都可以確認這會很好,謝謝!

SELECT 
     max(TermsAccepted), 
     max(CopyrightAcknowledged), 
     max(LoggedIn), 
     max(LockedOut), 
     max(AccountCopied) 
FROM MyTable 
+1

除非您確認它實際上解決了您的問題,否則不應發佈答案。 – rmaddy

+0

這解決了我的問題。當我被允許時,我會標記它回答。 – NullHypothesis