Это легче читать:
INSERT INTO my_table (colname)
SELECT 'foo' FROM DUAL
WHERE NOT EXISTS (SELECT * FROM my_table);
Отсутствие VALUES
смягчается с помощью SELECT FROM DUAL
, который предоставит значения. FROM DUAL
не всегда требуется, но не повредит включить его для тех странных конфигураций, где это требуется (например, установка Percona, которую я использую).
NOT EXISTS
быстрее, чем подсчет, который может быть медленным для таблицы с большим количеством строк.