有什麼方法可以在不同的表格的兩個字段中始終保持相同的值?MySQL:在不同表格的兩個字段中始終保持相同的值
回答
您可以使用triggers,以便如果其中一個字段發生更改,另一個字段會同步以匹配。
通常最好不要將值存儲兩次。相反,你可以存儲在表中只有一個值,當您查詢,您可以加入兩個表一起上的外鍵,讓你在同一時間從兩個表獲取值:
SELECT table1.foo, table2.bar
FROM table1
JOIN table2 ON table1.table2_id = table2.id
如果您將該值存儲兩次,稱爲非規範化。如果這些值出於某種原因而失去同步,這可能會導致問題。有時非規範化以提高性能是有利的,但單個連接速度非常快,除非您已經測量了性能並發現它太慢,否則我建議不要這樣做。
INSERT INTO TABLE A (FieldInA) VALUES ('X')
INSERT INTO TABLE B (FieldInB) VALUES ('X')
那麼根本不會刪除,也沒有更新,這些錶行,瞧,你總是在不同表的兩個字段的值相同。
哈哈哈!我真的希望你的意圖是作爲一個笑話... – 2010-08-10 18:19:10
不是我,但它是一場賭博。如果你刪除這個答案,當重新計算代表時,你會得到代表。 – 2010-08-10 18:22:57
爲什麼你不能爲你的數據庫設計normalize
,以便你沒有相同的數據兩次,不必擔心這樣的東西了?
如果你不能改變設計看一看triggers
我的猜測是保持相同的值是用戶輸入的自由格式文本或soemthing,但是然後他可以有一個表格並通過ID引用新條目。 – FrustratedWithFormsDesigner 2010-08-10 18:18:02
爲什麼你想這樣做嗎?
如果一個實體的一個屬性是總是與另一個相關實體的某個屬性相同,那麼你就有一個冗餘數據模型。
,而不是試圖同步屬性,參考一個屬性。使用連接將第一個表連接到第二個表,然後從一個表中獲取該屬性的值。例如,如果您目前有這樣的:
TableA.foo should always equal TableB.bar
刪除列TableA.foo,並做到這一點:
select A.*, B.bar as foo
from TableA A
join TableB B on (B.foreign_key = A.key);
- 1. 從兩個不同的表中查詢相同的字段MYSQL
- 2. 搜索兩個不同的MySQL表與不同的字段
- 3. 如何比較兩個不同表中的相同字段?
- 4. mySQL在兩個不同的表格中計數相似的行
- 5. MYSQL:加入兩個不同的字段到第三個表中的相同的字段
- 6. MySql單個查詢,兩個表相同的字段名稱
- 7. 加入兩個不同字段值的表格
- 8. 如何確保兩個div始終具有相同的高度?
- 9. 保持兩個div的長度相同
- 10. 前10名的記錄從相同的MySQL表兩個字段
- 11. 爲什麼我在這段代碼中保持兩個相同的隨機值?
- 12. SQL查詢比較mysql中同一個表中不同行的相同字段
- 13. Mysql建議:具有相同值的兩個字段
- 14. MySql同一表的兩個不同列的不同值
- 15. MySQL視圖鏈接3個字段到另一個表中的相同字段具有不同的值
- 16. 如何選擇不同表格的兩個字段之間的字段值
- 17. 在兩個不同的相關表中獲得兩個字段的總和
- 18. MySQL:選擇2次相同的字段與不同的值
- 19. 如果同一個表中的不同字段匹配兩個不同的值,則列出相同的字段兩次
- 20. joinLeft Zend Framework,不同表格中的字段名稱相同
- 21. 在兩個不同的jsps中同步兩個輸入字段
- 22. 如何確保mysql查詢中的字段順序始終保持不變
- 23. 從同一個表中選擇兩個不同的值(mysql)
- 24. 用mysql連接兩個不同表中的字段?
- 25. 以不同的值在行上連接兩個相同的表
- 26. 比較兩個不同表中的不同字段
- 27. MySql - 對兩個不同的字段組合應用相同的唯一約束
- 28. 如何在角度2中保持兩個字段同步
- 29. 如何確保兩個div在jQuery Mobile中始終具有相同的高度
- 30. 兩個相同的字不同
你能成爲一個更具體一點這個問題的本質,你爲什麼要做這個? 「最好的」解決方案可能取決於它... – FrustratedWithFormsDesigner 2010-08-10 18:19:01