Я просто зрозумів це. Це, мабуть, погана практика, але в цьому випадку це спрацювало для мене.
Я один з ледачих людей, які не хочуть створювати псевдоніми або виписувати кожну назву стовпця префіксом таблиці.
Ви можете вибрати всі стовпці з певної таблиці, використовуючи table_name.*оператор select.
Коли ви продубльовані імена стовпців, mysql перезапише з першого на останній. Дані з першого продубльованого імені стовпця будуть перезаписані, коли воно знову зустріне це ім'я стовпця. Отже, дублікат назви стовпця, що надходить останньою, виграє.
Якщо я приєднуюсь до 3 таблиць, кожна з яких містить дубльоване ім'я стовпця, порядок таблиць у операторі select визначатиме, які дані я отримую для дублюючого стовпця.
Приклад:
SELECT table1.* , table2.* , table3.* FROM table1 LEFT JOIN table2 ON table1.dup = table2.dup LEFT JOIN table3 ON table2.dup = table3.dup;
У наведеному вище прикладі значення, яке dupя отримую, буде від table3.
Що робити, якщо я хочу dupбути цінністю від table1?
Тоді мені потрібно зробити це:
SELECT table3.* , table2.* , table1.* FROM table1 LEFT JOIN table2 ON table1.dup = table2.dup LEFT JOIN table3 ON table2.dup = table3.dup;
Тепер, table1виходить останнім, тому значенням dupбуде значення з таблиці1.
Я отримав цінність, для якої я хотів, dupне виписуючи кожен окремий дивовижний стовпець, і я все ще отримую всі стовпці для роботи. Ага!
Я знаю, що значення dupмає бути однаковим у всіх 3 таблицях, але що, якщо table3не має відповідного значення для dup? Тоді dupв першому прикладі буде порожнім, і це буде облом.