Есть две таблицы. В первой хранятся данные, во второй хранятся атрибуты этих данных. В первой таблице есть столбец attr_id в котором хранится id записи во второй таблице. При объединении мне нужно присоединить справа все столбцы второй таблицы исключив id.
Я бы мог перечислить все необходимые столбцы, но их может быть много со временем.
SELECT data.*, attributes.hidden, attributes.state
FROM data
RIGHT JOIN attributes
ON attr_id = attributes.id
WHERE (data.mark = '0')
Каким образом мне построить запрос к БД?
К сожалению, в MySQL нет прямого способа исключить какую-то колонку из выдачи.
Один из воркэранудов, если брать чистый SQL — это получить все колонки таблицы из INFORMATION_SCHEMA.COLUMNS, затем удалить оттуда ненужные и вставить получившийся список полей в SQL запрос.
Для запроса к одной таблице это будет выглядеть примерно так:
SET @sql = CONCAT('SELECT ', (SELECT GROUP_CONCAT(COLUMN_NAME) FROM information_schema.columns WHERE table_schema = '<>' AND table_name = 'data' AND column_name NOT IN ('attr_id')), ' from data');
PREPARE query1 FROM @sql;
EXECUTE query1;
Апостиль в Лос-Анджелесе без лишних нервов и бумажной волокиты
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости