Ошибка базы данных MySQL: операнд должен содержать 1 столбец - PullRequest
0 голосов
/ 23 декабря 2010

Вот утверждение.Цель не очень важна, просто мне нужно знать, к какому типу объектов относится правило публикации.Спасибо!

select case(select count(mediaitemguid) from mediaitempublicationrules where publicationruleguid = '<snip>')
       when 0 then case(select count(catalogguid) from catalogpublicationrules where publicationruleguid = '<snip>')
           when 0 then case(select count(domainguid) from domaindefaultpublicationrules where publicationruleguid = '<snip>')
              when 0 then null
             else (select 'Domain', domainguid from domaindefaultpublicationrules where publicationruleguid = '<snip>')
             end
           else (select 'Catalog', catalogguid from catalogpublicationrules where publicationruleguid = '<snip>')
           end
       else (select 'MediaItem', mediaitemguid from mediaitempublicationrules where publicationruleguid = '<snip>')
       end;

РЕДАКТИРОВАТЬ: немного больше разъяснений ... это работало очень хорошо, пока я не поместил эти записи 'Domain' 'Catalog' 'MediaItem' во вложенные селекторы операторов else.Возможно, это что-то довольно простое, просто не сталкивайтесь с этой ошибкой до

1 Ответ

0 голосов
/ 23 декабря 2010

Ошибка указывает, что вы должны вернуть один столбец вместо двух

Один из способов исправить это использовать concat_ws как

select concat_ws(':', 'Domain', domainguid') ... <-- ':' is the delimiter
...