MYSQL сравнивает 2 таблицы и устанавливает значения

#python #mysql

Вопрос:

У меня проблема с моей базой данных MySQL. Я программирую его на python.

У меня есть 2 таблицы: Raspberry_data и Operation1 .

Я должен прочитать данные из Operation1 и скопировать некоторые значения из Operation1 в таблицу Raspberry_data. Проблема в том, что некоторые столбцы в Raspberry_data идентичны, что приводит к неправильной работе запроса.

Пожалуйста, проверьте следующий запрос:

http://sqlfiddle.com/#!9/a4c2ef/5

Я должен обновить Current_operation и ID столбцы в Raspberry_data таблице из приведенных данных Operation1 .

Ожидаемый результат:

 Current_operation = 1    ID = 4

Current_operation = 1    ID = 6
 

Однако в результате получается :

 Current_operation = 1    ID = 4

Current_operation = 1    ID = 4
 

Как я могу гарантировать, что он копирует отдельные строки строка за строкой?

По какой-то причине я не могу выполнить этот запрос на sqlfiddle, но я протестировал его в своей реальной базе данных mysql, и результаты те же.

Комментарии:

1. Ваша потребность нелогична. Если вы хотите обновить Raspberry_data, взяв некоторые данные из Operation1, вам НЕОБХОДИМО создать выражение критериев, которое установит только одну (или ни одну) строку из Operation1, которая соответствует каждой отдельной строке из Raspberry_data. Но вы вообще не используете в своем запросе какой — либо критерий соответствия-поэтому строки обновляются с использованием какой-либо неопределенной исходной строки. PS. Используйте эту скрипку вместо указанной в вашем вопросе.

2. Спасибо за комментарий. То, что вы сказали об этом состоянии, имеет смысл.. Однако я все еще не уверен, как я могу этого достичь. Для меня не важно, какая из двух строк имеет значение ID = 4, а какая-ID = 6, если они разные и взяты из операции 1-это все, что мне нужно.

3. пока они разные , они отличаются ID только значением столбца, никакой другой разницы. И, следовательно, нет никакого другого способа отличить их. Не пытайтесь рассказать об их относительном владении — это подделка и ее нельзя использовать.

4. Ладно, я понял. Так что, если я буду делать это по одной строке за раз и менять идентификатор. В моем состоянии идентификатора я бы использовал что-то вроде : WHERE ID == 0 значит, он не изменяет идентификатор, который уже был изменен?

5. Так что, если я буду делать это по одной строке за раз и менять идентификатор. Это решит проблему с одной стороны — вам не нужно различать строки в Операции1. Но существует проблема с другой стороны — вы должны указать, какая строка должна быть обновлена, без этого условия/ограничения все строки в таблице будут обновлены с использованием значений только из этой исходной строки.