0

これはかなり単純なはずですが、検索時に使用する適切な用語を見つけるのは難しいです。

以下のクエリでは、何も返さないWHERE lang='en'場合にのみ選択する必要があります。つまり、優先順位が付けられたWHERE lang='nl_NL'すべてのレコードを検索したいWHERE script='generic'lang=nl_NL

SELECT * FROM international WHERE script='generic' AND (lang = 'nl_NL' OR lang = 'en')
4

2 に答える 2

2
SELECT * FROM international WHERE script = 'generic' AND lang = CASE
  WHEN EXISTS(
    SELECT 1
    FROM   international
    WHERE  script = 'generic'
       AND lang   = 'nl_NL'
    LIMIT  1
  ) THEN 'nl_NL'
  ELSE 'en'
END
于 2013-02-04T18:49:09.853 に答える
1

指定された結果セットを取得する1つの方法の例を次に示します。

SELECT i.*
  FROM international i
 WHERE i.lang = 'nl_NL'
    OR (i.lang = 'en' 
        AND NOT EXISTS 
        (SELECT 1 FROM international d WHERE d.lang = 'nl_NL')
       )

script='generic'" "述語をいつ適用するかは、質問からは明らかではありません。

SELECT i.*
  FROM international i
 WHERE ( i.script = 'generic' AND i.lang = 'nl_NL')
    OR ( i.script = 'generic' AND i.lang = 'en'
         AND NOT EXISTS 
           ( SELECT 1
               FROM international d
              WHERE d.lang = 'nl_NL'
                AND d.script='generic'
           )
       )
于 2013-02-04T18:51:02.227 に答える