0

Where 内で if を実行できますか? または、フィールドがnullでない場合にのみチェックを実行できるようにするもの(パス= null)

SELECT  
IF(path IS NOT NULL, concat("/uploads/attachments/",path, "/thumbnails/" , nome), "/uploads/attachments/default/thumbnails/avatar.png") as avatar_mittente
FROM prof_foto  
WHERE profilo_id = 15 
 -- only if path != "/uploads/attachments/default/thumbnails/avatar.png"
AND foto_eliminata = 0 AND foto_profilo = 1
4

3 に答える 3

1

これを試すことができます

SELECT  
IF(path IS NOT NULL, concat("/uploads/attachments/",path, "/thumbnails/" , nome), "/uploads/attachments/default/thumbnails/avatar.png") as avatar_mittente
FROM prof_foto  
WHERE profilo_id = 15 
AND IF( path != "/uploads/attachments/default/thumbnails/avatar.png", 
         foto_eliminata = 0 AND foto_profilo = 1,
        foto_eliminata like '%' AND foto_profilo like '%'
        )
于 2013-10-24T09:55:32.490 に答える
0

これにはバイナリロジックを使用できます。

SELECT * FROM TABLE WHERE A
(if b then also where C)

なる

SELECT * FROM TABLE WHERE A 
AND (!b OR C)

あなたの場合:

SELECT  
IF(path IS NOT NULL, concat("/uploads/attachments/",path, "/thumbnails/" , nome), "/uploads/attachments/default/thumbnails/avatar.png") as avatar_mittente
FROM prof_foto  
WHERE profilo_id = 15 
AND (path = "/uploads/attachments/default/thumbnails/avatar.png" OR foto_eliminata = 0 AND foto_profilo = 1))
于 2013-10-24T09:52:06.627 に答える
0

はい、IF()値が期待される場所ならどこでも使用できますが、ほとんどの場合、それが最適なルートではありません。

WHERE IF(path IS NULL, portfolio_id = 15, TRUE)

しかし、好む:

WHERE path IS NULL OR portfolio_id = 15

NULL(と[anything] = NULLは比較できませんのでご注意くださいFALSE)

于 2013-10-24T09:52:41.797 に答える