Можно ли выбрать в одну запись значения колонок из нескольких записей?

ReMaRk

Новичок
Можно ли выбрать в одну запись значения колонок из нескольких записей?

subj...
например запрос:
SELECT word
FROM db.table
WHERE wordid BETWEEN 1 AND 14
данный запрос возвращает несколько записей с одной колонкой и чтоб достать значения надо читать их в массив.
А можно ли средствами SQL выбрать их в одну запись так чтоб доставать только один ряд?
 

Yurik

/dev/null
Прямо нельзя и непонятно зачем нужно.
Можно в обходную, например через
SELECT .. INTO OUTFILE...
а потом файл считать
Но чем не устраивает
implode($row) ?
 

Кром

Новичок
ReMaRk, обьясни что тебе нужно и думаю тебе предложат гораздо более правильное решение.

P.S. Видимо проблема в конкатенации строк.
 

Сергей123

Новичок
Ему нужна функция типа SUM(), только чтобы не суммировала числа, а конкатенировала строки.
 

Апельсин

Оранжевое создание
Можно сделать через пользовательские переменные.

SELECT @a:='';
SELECT @a:=CONCAT(@a, word) FROM db.table WHERE wordid BETWEEN 1 AND 14
 

chira

Новичок
Re: Можно ли выбрать в одну запись значения колонок из нескольких записей?

Автор оригинала: ReMaRk
А можно ли средствами SQL выбрать их в одну запись так чтоб доставать только один ряд?
Код:
create table cs (id int, str varchar(20));
insert into cs values (1,'a'),(1,'b'),(2,'c'),(2,'c'),(2,'d');
select * from cs;
set @mid:=0;
set @s:='';
create temporary table tt as
 select if(@mid=id,@s:=CONCAT(@s,str),@s:=str) strsum
   , @mid:=id id
 from cs
 order by id;
select max(strsum),id from tt group by id;
Трудно понять, попал в тему или нет ...
Автор чего-то не договаривает ...
 

fixxxer

К.О.
Партнер клуба
в 4.0.13+ точно работает... сдается мне что и в .12 тоже.
 

ReMaRk

Новичок
почти что матом:
You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near '(@a, word) FROM db.table WHERE wordid BETWEEN 1 AND 14'
 

Falc

Новичок
Originally posted by Апельсин
Можно сделать через пользовательские переменные.

SELECT @a:='';
SELECT @a:=CONCAT(@a, word) FROM db.table WHERE wordid BETWEEN 1 AND 14
Тогда уж заодно добавить:
ORDER BY length(@a) DESC
LIMIT 1
 

ReMaRk

Новичок
дело то в том что он ругается на запрос в месте где перечисляются поля в результирующую выборку... он даже не доходит до "FROM" не то что до "ORDER BY"
 

Demiurg

Guest
убери пробел между CONCAT и открывающейся скобкой.
 

Demiurg

Guest
Покажи точно тот запрос, который ты скармливаешь mysql.
 
Сверху