我有以下查询,它偶尔会为不符合查询WHERE
条件的收件人ID创建随机通知条目。我的查询的WHERE
部分会导致随机插入有什么问题?
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,
comment
WHERE
(comment.author_id != '$senderId' AND comment.target_id = '$id')
OR (stream.author_id != '$senderId' AND stream.id = '$id')
答案 0 :(得分:2)
您的stream
和comment
表之间没有联接条件。您正在有效地生成笛卡尔积,因此您可能包含与stream
无关的comment
行,反之亦然。
我建议你使用JOIN
语法并声明一个条件来关联两个表中的行。