5
私の質問はMySQLの最適化と良い方法です。MySQL:ORDER BY FIELD/GROUP BY
私は英語のテキストを見つけることができない場合、私はフランス語のテキストを使用したい、それが存在しない場合、私はスペイン語を使用したいと思います。
id lang text
1 fr text_FR
1 en text_EN
1 es text_ES
2 fr text_FR2
3 fr text_FR3
3 es text_ES3
を私がしたい:つまり
、私が持っている
id lang text
1 en text_EN
2 fr text_FR2
3 fr text_FR3
だから私はthis、this、that、またはthatのようないくつかのトピックをお読みください。 OK。 私はこの試みた:
SELECT text FROM (
SELECT id, text
FROM translation
ORDER BY FIELD(lang, 'en', 'fr', 'es')
) tt GROUP BY tt.id;
をしかし、私はこのクエリをEXPLAINするとき、私は読むことができます:
id select_type table partitions type possible_keys key key_len ref rows Extra
1 PRIMARY <derived2> NULL ALL NULL NULL NULL NULL 4 Using temporary; Using filesort
2 DERIVED translation NULL ALL PRIMARY PRIMARY 52 1641 Using filesort
をだから、それがために、サブクエリの、最適化されていません。このサブクエリを避けることはできますか?
興味深い、COALESCE' '知りませんでした! – xiankai