0

SELECTデータベース内のすべての情報に対して、MySQL クエリで if ステートメントを使用したいと考えていCOUNTますaid

擬似コード:

IF (COUNT(`AID`) > 0) {
  SELECT * FROM `a_votes` WHERE `aid` = '1'
} ELSE {
  RETURN 'No Rows'
}

どうすればこれができるか教えてください。

編集 - -

次のクエリを試しましたが、エラーが発生しますOperand should contain 1 column(s)

SELECT IF( (

SELECT COUNT( aid ) AS  `count` 
FROM  `a_votes` 
WHERE  `aid` =1 ) =0,  'true', (

    SELECT * 
    FROM  `a_votes` 
    WHERE  `aid` =1
  )

) AS message
4

2 に答える 2

1
SELECT * FROM (
    SELECT COUNT(*) as COUNT FROM a_votes WHERE aid = '1'
) x WHERE COUNT > 0;

一致する行がない場合、単純なwill はカウントに対してCOUNT(*))単一の行を返します。その条件を排除する外側のクエリで0通常のクエリをラップすると、行は返されません。COUNT(*)

編集:

のおかげで@bisiclop、これはより良い解決策です:

SELECT COUNT(*) as COUNT
FROM a_votes
WHERE aid = '1'
HAVING COUNT(*) > 0;
于 2012-06-16T19:00:29.020 に答える
0

あなたの疑似コードを SQL に転記したい場合、これが結果になりますが、不必要に複雑だと思うので、単なるデモンストレーションです。

/* this query might return zero rows, so beware */
SELECT
  (SELECT COUNT(`aid`) > 0 FROM `a_votes`) AS the_count,
  the_row.*
FROM
  (SELECT * FROM `a_votes` WHERE `aid` = '1') AS the_row

同じを使用してLEFT JOIN、少なくとも 1 つの行を返す必要があります。

SELECT *
/* count will create exactly 1 row */
FROM      (SELECT COUNT(`aid`) > 0 FROM `a_votes`)    AS the_count
/* this is allowed to return 0,1,...N rows */
LEFT JOIN (SELECT * FROM `a_votes` WHERE `aid` = '1') AS the_row
于 2012-06-16T18:59:37.503 に答える