Запрашивая MySQL с помощью UNION, я получаю сообщение об ошибке в одном из выбранных столбцов.

Запрос работает просто отлично, как:

$query = '(SELECT contenttype, id, title, type, image, rating, date2, num_votes FROM videos)
UNION
(SELECT contenttype, id, title, type, image, rating, date2, num_votes FROM games)
UNION
(SELECT contenttype, id, title, type, image, rating, date2, num_votes FROM pics)
ORDER BY date2 DESC
LIMIT 10';
$r = mysql_query($query) or die(mysql_error());

но не сработает, если я попытаюсь потянуть колонку. Все таблицы в базе данных используют столбец с именем. Я получаю эту ошибку: у вас есть ошибка в вашем синтаксисе SQL; проверьте руководство, соответствующее вашей версии сервера MySQL, на предмет правильного синтаксиса для использования рядом с 'on, type, image, rating, date2, num_votes FROM videos) UNION (ВЫБЕРИТЕ contentty' в строке 1

Пример добавления мной запроса:

$query = '(SELECT contenttype, id, title, type, on, image, rating, date2, num_votes FROM videos)
UNION
(SELECT contenttype, id, title, type, on, image, rating, date2, num_votes FROM games)
UNION
(SELECT contenttype, id, title, type, on, image, rating, date2, num_votes FROM pics)
ORDER BY date2 DESC
LIMIT 10';
$r = mysql_query($query) or die(mysql_error());

Не имеет смысла для меня. Почему это произошло?

2 ответа

Избежать on поле, поскольку это одно из зарезервированных ключевых слов MySQL

$query = '(SELECT contenttype, id, title, type, `on`, image, rating, date2, num_votes FROM videos)
UNION
(SELECT contenttype, id, title, type, `on`, image, rating, date2, num_votes FROM games)
UNION
(SELECT contenttype, id, title, type, `on`, image, rating, date2, num_votes FROM pics)
ORDER BY date2 DESC
LIMIT 10';

ON является зарезервированным ключевым словом в MySQL. Цитирование это должно работать. То есть:

(SELECT contenttype, id, title, type, `on`, image, rating, date2, num_votes FROM videos)
UNION
(SELECT contenttype, id, title, type, `on`, image, rating, date2, num_votes FROM games)
UNION
(SELECT contenttype, id, title, type, `on`, image, rating, date2, num_votes FROM pics)
ORDER BY date2 DESC
LIMIT 10
Другие вопросы по тегам