![]() |
#421 | |
Godfather
![]() ![]() ![]() ![]() ![]() ![]() Join Date: Jul 2008
Location: near PC
Posts: 5,476
Reputation: 138
|
![]() Quote:
Code:
SELECT *, (SELECT name FROM players WHERE players.id=houses.player_id) player_name FROM houses |
|
![]() |
![]() |
![]() |
#422 | |
Banned
![]() Join Date: Sep 2008
Location: Russia
Posts: 1,447
Reputation: 356
|
![]() Quote:
Code:
SELECT houses.*, players.name AS player_name FROM houses LEFT JOIN players ON players.id = houses.player_id Last edited by ZiGGi; 01/05/2018 at 05:43 AM. |
|
![]() |
![]() |
![]() |
#423 |
Godfather
![]() ![]() ![]() ![]() ![]() ![]() Join Date: Jul 2008
Location: near PC
Posts: 5,476
Reputation: 138
|
![]() |
![]() |
![]() |
![]() |
#424 |
Banned
![]() Join Date: Sep 2008
Location: Russia
Posts: 1,447
Reputation: 356
|
![]() |
![]() |
![]() |
![]() |
#425 |
Godfather
![]() ![]() ![]() ![]() ![]() ![]() Join Date: Jul 2008
Location: near PC
Posts: 5,476
Reputation: 138
|
![]()
Вы забываете что в данном случае вложенный запрос будет работать по первичному ключу, так что работать будет мгновенно. Плюс "примитивные" запросы кэшируются, а джойны нет.
|
![]() |
![]() |
![]() |
#426 |
Big Clucker
![]() ![]() Join Date: Oct 2017
Posts: 76
Reputation: 3
|
![]()
Целесообразно ли каждый раз при обновлении данных, за место UPDATE использовать INSERT INTO ON DUPLICATE KEY UPDATE?
Может ли это сыграть со мной какую то злую шутку? P.S. Использование UPDATE не возможно, по причине того, что я не могу знать на 100% есть ли в таблице строка с таким ключом. |
![]() |
![]() |
![]() |
#427 | |
Godfather
![]() ![]() ![]() ![]() ![]() ![]() Join Date: Jul 2008
Location: near PC
Posts: 5,476
Reputation: 138
|
![]() Quote:
Но с другой стороны я думаю всегда можно решит вопрос с UPDATE. Даже если такой записи нет, то можно перехватить ошибку и выполнить INSERT. |
|
![]() |
![]() |
![]() |
#428 |
Big Clucker
![]() ![]() Join Date: Oct 2017
Posts: 76
Reputation: 3
|
![]()
Снова возвращаюсь к этой теме, как правильно нужно использовать INSERT INTO ON DUPLICATE KEY UPDATE если например мне нужно сохранить только 1 поле, но если строки не будет в таблице, то записать все поля в новую строку?
Как я правильно понимаю, то что то вроде этого: Code:
INSERT INTO table_name (field_all) VALUES (value_all) ON DUPLICATE KEY UPDATE field_current = value_current |
![]() |
![]() |
![]() |
#429 |
Huge Clucker
![]() ![]() ![]() Join Date: May 2013
Location: Восточный Мордор
Posts: 453
Reputation: 15
|
![]()
Вообще стоит помнить, что запрос "INSERT INTO ON DUPLICATE KEY UPDATE" в любом случае увеличит значение AUTO_INCREMENT, даже если строка будет найдена и выполнится UPDATE. Соответственно, рано или поздно можно словить выход за пределы int.
Тебе стоит описать саму задачу, которая перед тобой стоит, дабы можно было подобрать хорошее решение. Но не думаю, что это стоит делать в данной теме. Создай отдельную тему, опиши там то, что ты хотел бы сделать и покажи как ты делаешь это сейчас |
![]() |
![]() |
![]() |
#430 | |
Big Clucker
![]() ![]() Join Date: Oct 2017
Posts: 76
Reputation: 3
|
![]() Quote:
А задача просто в том, чтобы сохранить какие либо данные если будут найдены совпадения по уникальным ключам, то перезаписать строку, если совпадений нет, то сделать запись новой строки. Но я ее вроде как уже решил через INSERT INTO ON DUPLICATE KEY UPDATE |
|
![]() |
![]() |
![]() |
Thread Tools | |
Display Modes | |
|
|
![]() |
||||
Thread | Thread Starter | Forum | Replies | Last Post |
[GameMode] Basic MySQL Account Script [MySQL R7, cache functions, easydialog, Whirlpool, salted passwords] | ReneG | Gamemode Scripts | 71 | 02/03/2014 12:48 PM |
[GameMode] MySQL CLEAN GAMEMODE [Whirlpool, MySQL BlueG R7, Cache, Ready Package (Windows)] | GiamPy. | Gamemode Scripts | 13 | 13/09/2013 05:31 PM |
BlueG MySQL plugin - Failed (plugins/mysql.so: undefined symbol: _Z13stringvprintfPKcPc) | linuxthefish | Plugin Development | 10 | 13/07/2013 11:56 AM |
[Tool/Web/Other] MySQL DB Manager - Easily manage your MySQL databases with this remote application | fiki574 | Tools and Files | 13 | 22/07/2012 10:41 AM |