1

だから私はこのクエリを持っています

SELECT IF(c2.nid IS NULL, c.*, c2.*) FROM table1 c LEFT JOIN table1 c2 ON c.cid = c2.pid WHERE c.pid = 0 AND c.nid = 674662;

cとc2の両方がtable1を参照していることに注意してください....基本的に、左結合エントリが存在する場合、左結合c2の行を返し、存在しない場合は返すようにしたいc1 のエントリ...

ただし、このクエリを実行すると、mysql 構文エラーが発生します。達成しようとしていることを達成するにはどうすればよいですか (できれば単一の IF ステートメントで)。

4

2 に答える 2

2

IFステートメント内で星のパターンを使用できないことを恐れています。したがって、次のように明示的に入力する必要があります

SELECT IF(c2.nid IS NULL, c.cid, c2.cid), 
       IF(c2.nid IS NULL, c.pid, c2.pid), ... 
FROM table1 c LEFT JOIN table1 c2 ON c.cid = c2.pid 
WHERE c.pid = 0 AND c.nid = 674662;
于 2013-05-06T23:07:13.983 に答える