Я ищу что-то более эффективное и / или более легкое для чтения, чем следующий запрос.Лучший способ объяснить этот вопрос - предоставить пример.
Предположим, что следующая структура таблицы в MySQL представляет, скажем, контекст локализации для различных строк в приложении, которое я создаю.
create table LOCALIZATION_TABLE (
SET_NAME varchar(36) not null,
LOCALE varchar(8) not null default '_',
ENTRY_KEY varhcar(36) not null,
ENTRY_VALUE text null
);
alter table LOCALIZATION_TABLE
add constraint UQ_ENTRY
unique (SET_NAME, LOCALE, ENTRY_KEY);
Предположим, что в таблицу введены следующие значения:
insert into LOCALIZATION_TABLE (SET_NAME, LOCALE, ENTRY_KEY, ENTRY_VALUE)
values
('STD_TEXT', '_', 'HELLO', 'Hello!'),
('STD_TEXT', '_', 'GOODBYE', 'Goodbye.'),
('STD_TEXT', 'ge', 'GOODBYE', 'Lebewohl')
;
Я хочу выбрать все доступные записи для немецкого языка ("ge") и, если он недоступен, использовать текст на английском языке ("_")) по умолчанию.В настоящее время я использую следующий запрос:
select * from LOCALIZATION_TABLE where SET_NAME = 'STD_TEXT' and LOCALE = 'ge'
union
select * from LOCALIZATION_TABLE where SET_NAME = 'STD_TEXT' and LOCALE = '_'
and ENTRY_KEY not in (
select ENTRY_KEY from LOCALIZATION_TABLE where BUNDLE = 'STD_TEXT' and LOCALE = 'ge'
)
I действительно не нравится внешний вид этого запроса, и я уверен, что должно быть что-то более лаконичное, которое можно использовать вместо,Любая помощь или подсказки в правильном направлении будут оценены.Хотя это работает, оно просто не выглядит правильным .