MySQL COALESCE альтернатива для выбора обоих наборов результатов для вставки, а не или / или? - PullRequest
0 голосов
/ 26 января 2012

, поэтому у меня возникла проблема с этим следующим запросом. Итак, запрос только выбирает для вставки только комментарийон вставляет уведомления как для идентификатора автора элементов потока, так и для идентификатора автора для всех комментариев, связанных с идентификатором целевого потока.Вся помощь приветствуется

INSERT INTO notification 
       (text, type, target_id, sender_id, recipient_id, data, timestamp, is_unread)
SELECT DISTINCT '$text', 'comment', '$id', '$senderId',
       COALESCE(comment.author_id, stream.author_id), 
       '$dataArray','$timestamp', '1'
FROM stream 
     LEFT JOIN comment ON comment.target_id = stream.id
WHERE (comment.target_id = '$id' OR stream.id = '$id')
  AND comment.author_id != '$senderId'"
  AND stream.author_id != '$senderId'

1 Ответ

0 голосов
/ 26 января 2012

Я согласен с ГБН.Если по какой-либо причине вам необходимо объединить их, вы можете использовать функцию concat () или concat_ws ().

concat (col1, col2, ...):

select concat('a','b','c');

Возвращает:

abc

concat_ws (разделитель, col1, col2, ...):

select concat_ws(',','a','b','c');

Возвращает:

a, b, c

Вам необходимо остерегаться особых ситуаций с типами каста.Посмотрите на этот раздел Строковые функции в руководстве.

...