Для удаления повторяющихся строк с несколькими полями сначала привяжите их к новому уникальному ключу, который указан только для отдельных строк, а затем используйте команду «group by» для удаления повторяющихся строк с помощью того же нового уникального ключа:
Create TEMPORARY table tmp select concat(f1,f2) as cfs,t1.* from mytable as t1;
Create index x_tmp_cfs on tmp(cfs);
Create table unduptable select f1,f2,... from tmp group by cfs;
В (ANSI) C99 можно использовать обозначенный инициализатор для инициализации структуры:
MY_TYPE a = { .flag = true, .value = 123, .stuff = 0.456 };
Редактирование: Другие участники инициализируются как нуль: "Опущенные члены поля неявно инициализируются то же как объекты, которые имеют статическую продолжительность хранения". ( https://gcc.gnu.org/onlinedocs/gcc/Designated-Inits.html )
void function(void) {
MY_TYPE a;
a.flag = true;
a.value = 15;
a.stuff = 0.123;
}
Вы почти получили его...
MY_TYPE a = { true,15,0.123 };
Быстрый поиск на 'структуре инициализирует c' , показывает мне это
a = (MYTYPE){ true, 15, 0.123 };
сделал бы прекрасный в C99
Можно сделать это с составной литерал . Согласно той странице, это работает в C99 (который также рассчитывает как ANSI C).
MY_TYPE a;
a = (MY_TYPE) { .flag = true, .value = 123, .stuff = 0.456 };
...
a = (MY_TYPE) { .value = 234, .stuff = 1.234, .flag = false };
обозначения в инициализаторах являются дополнительными; Вы могли также записать:
a = (MY_TYPE) { true, 123, 0.456 };
...
a = (MY_TYPE) { false, 234, 1.234 };