クエリが必要です。
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)