我有一個mySQL表,其中包含一組參考數據。我有另一張包含數據的表格,用於描述此參考數據的更新或附加條目。由於各種原因,我不會介入,重要的是參考數據保持不變,因爲特定的用戶來創建記錄(因此第二張表)。這些表之間的模式與具有2鍵複合主鍵的「自定義」表的例外是相同的。其中一列是「自定義」和參考表之間共享的。是否可以將此業務邏輯放入SQL查詢中?
我想在一個單獨的SQL語句來執行這些表的業務邏輯如下:
如果在「自定義」表中存在具有相同鍵的值是什麼在參考表中的記錄,然後採取「習俗」。否則,取參考值。
我想也許我可以使用RIGHT JOIN,或者甚至可以使用UNION運算符來控制返回的內容。我一直在爭論SQL的邏輯。 JOIN將從一個表中獲取信息與另一個表中的信息進行連接,這是我真正不需要的。 UNION將簡單地移除表格之間的重複...,這很接近。
喜歡的東西:
SELECT * FROM定製UNION SELECT * FROM參考
除了這隻會下降重複,如果所有列是相同的。如果有任何不同(這將是自定義條目存在的原因),那麼UNION除了將兩個表格的內容混合在一起外什麼都不做。
我對這一切都錯了嗎?
感謝您提供的任何見解。
因此,從兩個表中獲取所有記錄,然後在where子句中嘗試過濾出結果集中具有其自定義表中的鍵的記錄。對?這是否意味着最終結果集將缺少其自定義表中存在鍵值的記錄? – Raevik 2012-07-12 20:40:53
Wellll,有點。我的自定義表有一個額外的主鍵列,這意味着技術上可能會有多個自定義記錄,並且具有與參考表中的一條記錄相同的keyVal。 – Raevik 2012-07-12 20:43:20
Where子句適用於每個單獨的選擇,而不是整個聯合查詢。儘管如此,一個'order by'可能會結束整個事情。 – 2012-07-12 20:46:03