我有2個表,其中一個包含主要信息,第二個表包含相同的字段加上附加信息。第二個表格會有查詢時應覆蓋第一個表格的數據。領域更大,我只是縮短了他們在這裏展示。MySQL - 類似的標題 - 多表
第一表(產品):
+----+--------------+--------------+---------------+--------------------------+
| id | manufacturer | product_name | product_title | product_description |
+----+--------------+--------------+---------------+--------------------------+
| 1 | testingA | productA | productTitleA | main product description |
| 2 | testingA | productB | productTitleB | main product description |
| 3 | testingA | productC | productTitleC | main product description |
+----+--------------+--------------+---------------+--------------------------+
第二表(products_secondary)
+----+------------+--------------+--------------+---------------+----------------------+---------+
| id | product_id | manufacturer | product_name | product_title | product_description | context |
+----+------------+--------------+--------------+---------------+----------------------+---------+
| 1 | 1 | (null) | (null) | (null) | new description here | test |
+----+------------+--------------+--------------+---------------+----------------------+---------+
我的目標是從那裏context = text
預期結果的第二表中選擇的值:
+----+--------------+--------------+---------------+--------------------------+
| id | manufacturer | product_name | product_title | product_description |
+----+--------------+--------------+---------------+--------------------------+
| 1 | testingA | productA | productTitleA | new description here |
| 2 | testingA | productB | productTitleB | main product description |
| 3 | testingA | productC | productTitleC | main product description |
+----+--------------+--------------+---------------+--------------------------+
我知道作品的查詢如下:
SELECT IFNULL(`products_secondary`.`product_description` , `products`.`product_description`) AS `product_description` FROM `products` LEFT JOIN `products_secondary` ON `products_secondary`.`product_id` = `products`.`id` AND `products_secondary`.`context` = 'test'
我敢肯定有一個更簡單的方法來做到這一點不必提供IFNULL()的每個字段。這裏是一個SQL小提琴:http://sqlfiddle.com/#!9/6985b/1
謝謝。
那是一個可怕的數據庫設計。爲什麼表2中的表1中的所有列無論如何,但將它們全部設置爲NULL使得更不用說 – RiggsFolly
@RiggsFolly它看起來像第一個表是默認值,第二個表覆蓋了默認值。使用它的更常見的應用程序是翻譯表,當沒有翻譯時使用默認表。 – Barmar
我認爲沒有比大量'IFNULL'測試更簡單的方法。抱歉。 – Barmar