Исключить столбец из JOIN

179
22 августа 2018, 11:10

Есть две таблицы. В первой хранятся данные, во второй хранятся атрибуты этих данных. В первой таблице есть столбец attr_id в котором хранится id записи во второй таблице. При объединении мне нужно присоединить справа все столбцы второй таблицы исключив id.

Я бы мог перечислить все необходимые столбцы, но их может быть много со временем.

SELECT data.*, attributes.hidden, attributes.state 
FROM data 
RIGHT JOIN attributes 
ON attr_id = attributes.id 
WHERE (data.mark = '0')

Каким образом мне построить запрос к БД?

Answer 1

К сожалению, в 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;
READ ALSO
Gulp-inject код теряет выравнивание

Gulp-inject код теряет выравнивание

Нужна помощьИспользую gulp-inject для дробления html, после инъекции кусков кода в index

142
Как убрать фон у input&#39;а?

Как убрать фон у input'а?

Как убрать фон белый у этой кнопки? То что серое это и есть фон заданный ей через background-color,но фон у нее не изменился(который белый)

187
background html css

background html css

Всем приветЯ добавил bg к header

160