2017-08-08 9 views
1

何が間違っていますか?より多くの人が結婚した人よりも独身の人であればyesを表示する必要があります。私はただそれがはいかいいえを表示するだけです。うまくMySQLが使用することを考慮印刷されたSQL IF文

IF 
select COUNT(StudMaritalStatus) from students WHERE StudMaritalStatus = "M" 
< 
select COUNT(StudMaritalStatus) from students WHERE StudMaritalStatus = "S" 
Print 'Yes' 
ELSE 
Print 'No'; 
+0

https://stackoverflow.com/questions/8147834/how-to-echo-print-statements-while-executing-a-sql-script –

+0

エラーを明確にするために、間違ったIF文を使用していますシンタック –

+0

構文エラーステートメントを投稿してください。 –

答えて

2

IF expression THEN 
     expression   
    ELSE 
ENDIF; 

あなたが答えで

DECLARE married int, single int 

SET married = select COUNT(StudMaritalStatus) from students WHERE StudMaritalStatus = 'M' 

SET single = select COUNT(StudMaritalStatus) from students WHERE StudMaritalStatus = 'S' 

IF married < single THEN 
    PRINT 'YES' 
ELSE 
    PRINT 'NO' 
END IF 

はイエス、あなたの構文が間違っていたselect文でそれをやっていないの方が良いでしょう https://dev.mysql.com/doc/refman/5.7/en/if.html

+0

最も洗練されたソリューションですが、構文がどこで間違っていたか、そして修正する方法を示しています。 @Danあなたのソリューションは、データベースの呼び出しを最小限に抑えるために最適化されました。複雑な最初の複雑さを考えました:) – mvermef

+0

これは動作しませんでした。 –

2

あなたはこのようなものが欲しい:

select case when married >= single then 'M' else 'S' end 
from 
(
select sum(case when StudMaritalStatus = 'M' then 1 else 0 end) married 
, sum (case when StudMaritalStatus = 'S' then 1 else 0 end) single 
from students 
) derivedTable 

あなたのビジネス要件によって異なりますが、私たちの知るところではありません。

関連する問題