クエリが必要です。
CREATE TABLE `location_areas_localized` (
`id` int(11) DEFAULT NULL,
`lang_index` varchar(5) DEFAULT NULL,
`name` varchar(255) DEFAULT NULL,
KEY `id` (`id`),
KEY `lang_index` (`lang_index`),
KEY `name` (`name`),
FULLTEXT KEY `name_2` (`name`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
INSERT INTO `location_areas_localized` (`id`, `lang_index`,`name`)
VALUES
(1,'ru','Нью Йорк'),
(1,'en','New York'),
(2,'en','Boston'),
(2,'ch','波士顿')
;
検索のロジック。
行がlang_index='ru' AND id IN(1,2)見つかった場合。lang_index='ru'
1つ以上の行がlang_index='ru'存在しない場合はすべてを返す必要がありますがlang_index='en'、IDとともに存在します。次に、存在するland_index='ru' AND id IN(1,2)すべてのものと、で検出されないlang_index='ru'が検出されたものすべてを返す必要がありlang_index='en'ます(テーブル内-lang_index='en'常に存在するすべての行)
sqlfiddleを参照してください
IDごとに必要な結果は1つだけです。GROUP BY idを試しましたが、正しく機能しません。
出力は
1,'ru','Нью Йорк'
2,'en','Boston' (because lang_index='ru' with id 2 not found)