0

タイトルがこれである場合、それらのファイル名を除外するかのように、ifステートメントを配置しようとしています。明らかに機能していませんが、アイデアはありますか?

SELECT
    SUM(streamlength)
FROM
    files,
    filemetadata
where
    files.id = filemetadata.id 
    AND title like 'abc'
    and (Time > '2013-01-01' and Time < '2013-08-06' )
    and 
    if((title like 'abc' AND Time > '2013-02-22'),
    (filename NOT like '%20121129%'
    AND filename NOT like '%20121204%'
    AND filename NOT like '%20121214%'
    AND  filename NOT like '%20121219%'
    AND filename NOT like '%20130109%'
    AND  filename NOT like '%20130114%'),filename like 
                   '%1111111%')
4

1 に答える 1

3

SQL の意図を正しく読んでいる場合:

SELECT
SUM(streamlength)
FROM
files,
filemetadata
where
files.id = filemetadata.id 
AND title like 'abc'
and (Time > '2013-01-01' and Time < '2013-08-06' )
and 
(
  ( 
    (title like 'DE-PIAE78' AND Time > '2013-02-22')
    AND
    (filename NOT like '%20121129%'
     AND filename NOT like '%20121204%'
     AND filename NOT like '%20121214%'
     AND  filename NOT like '%20121219%'
     AND filename NOT like '%20130109%'
     AND  filename NOT like '%20130114%')
  )
  OR
  (
    NOT ( (title like 'DE-PIAE78' AND Time > '2013-02-22') )
    AND ( filename like '%1111111%')
  )
)

(title like 'DE-PIAE78' AND Time > '2013-02-22')これは、true または falseに基づいて、さまざまなファイル名に一致します。

一部の SQL バリアントは IF ステートメントをサポートしていますが、すべてがサポートしているわけではありません。

于 2013-09-03T22:28:34.260 に答える