11

次のクエリは自明だと思います。

SELECT IF (SELECT COUNT(*) FROM mytable > 0, 'yes', 'no');

うまくいかないのはなぜですか?また、どのように修正すればよいですか?

4

4 に答える 4

24

サブクエリを括弧で囲みます。

SELECT IF ((SELECT COUNT(*) FROM mytable), 'yes', 'no');
于 2012-12-12T12:51:15.567 に答える
4

これはあなたが望むものですか?

SELECT IF(COUNT(*) > 0, 'yes', 'no') FROM mytable;

1:

SELECT
  t1.*,
  (SELECT IF(COUNT(*) > 0, 'yes', 'no') FROM mytable) AS col1
FROM
  table t1;

2:

SELECT
  t1.*,
  t2.*
FROM
  table t1,
  (SELECT IF(COUNT(*) > 0, 'yes', 'no') AS col1 FROM mytable) t2
于 2012-12-12T12:51:47.733 に答える
3

クエリがより複雑で、これが問題の軽減に過ぎない場合は、これがより良い解決策だと思います

SELECT IF ( (SELECT COUNT(*) AS counter FROM myTable HAVING counter>0) , 'yes', 'no')

より複雑なチェックを行うことができます (つまり、カウンター > N または複数の条件)

于 2012-12-12T12:58:10.833 に答える
0

これを試して:

SELECT IF((SELECT COUNT(*) FROM mytable) > 0, 'yes', 'no');
于 2012-12-12T12:56:39.520 に答える