2016-09-16 5 views
1

Я вижу этот вопрос в моих кодах:Эти два вопроса идентичны?

INSERT INTO comments (post_id, user_id, table_code, content, author_id, pinged_id, date_time) 
SELECT ?,?,?,?,?,?,? 
FROM qanda qa, users u 
WHERE qa.id=? and author_id IS NULL 
limit 1; 

я написал выше запрос уже .. Теперь я считаю, , user u избыточна в моем запросе. Я прав?

Вы знаете, почему я задаю этот вопрос? Потому что всегда есть причина в моих кодах. Теперь я не могу вспомнить, в чем причина написания этого , users u. Вот почему я волнуюсь, чтобы удалить его.

Во всяком случае, удаление , users u что-то изменяет? или это полностью избыточно?

+0

Не совсем. Если u пуст, никакая строка не будет вставлена. Если u содержит данные, а также qa, тогда будет вставлена ​​1 строка. – jarlh

+0

Нет, добавив вторую таблицу, подобную той, что делает «CROSS JOIN» между двумя таблицами (что, вероятно, не означает, что вы хотите) – Siyual

+0

К какой таблице принадлежит 'author_id'? –

ответ

2

С author_id принадлежит к таблице qanda, неявное соединение к таблице users не имеет никакой цели. На самом деле это перекрестное соединение, поскольку нет условий соединения, а это значит, что это может быть настоящий босс. Вы можете попробовать использовать следующую упрощенную INSERT заявление:

INSERT INTO comments (post_id, user_id, table_code, content, author_id, 
         pinged_id, date_time) 
SELECT ?,?,?,?,?,?,? 
FROM qanda qa 
WHERE qa.id=? AND author_id IS NULL 
LIMIT 1 

Но это не объясняет, что users таблица делает там в первую очередь. Возможно, вы унаследовали этот запрос от кого-то (или чего-то еще), и в свое время соединение использовалось по законной причине. Несмотря на это, удалите долг сейчас, пока вы можете легко это сделать.

+0

Посмотрите, некоторые люди написали« нет »в комментариях по моему вопросу, я имею в виду, некоторые люди считают ваш запрос * (в вашем ответе) * и мой * (в вопросе) * не идентичны. Так вы уверены, что они одинаковы? –

+0

AFAIK ваш исходный запрос выполняет кросс-соединение, поэтому я ожидал бы, что записи в таблице qanda будут вставлены несколько раз, один раз для каждой записи в qanda, которая соединяется с записью в 'users'. Разве вы не заметили что-то странное в отношении вставленных данных? –

+0

Почти то же самое, по крайней мере, до тех пор, пока таблица u имеет данные. – jarlh

Смежные вопросы