我用關鍵詞標記照片,當點擊鏈接後查看照片時,我想檢索具有相同關鍵詞的照片集合的鏈接。我已經使用逗號分隔存儲了標記關鍵字。任何人都可以請我提示如何獲取這些數據?在MySQL中的進步
回答
簡單的解決辦法是使用一個查詢,取LIKE clause的優勢:
SELECT * FROM `photo` WHERE `keywords` LIKE "%' . $keyword . '%"
請但是記住,一個逗號分隔的列表不是這樣做的最佳實踐。通過將其保留在此列表中,您佔用的空間超出了必要的範圍,減慢了傳輸時間並佔用了冗餘空間。
理想情況下,您應該有另一個表格句柄標記(並將標記關鍵字鏈接到另一個表格中)並簡單地使用JOIN表格來獲得結果。
只需添加到你已經很好的答案中,[數據庫規範化](http://en.wikipedia.org/wiki/Database_normalization)就是這裏的關鍵字。 – thordarson
非常感謝您的意見。 sql ='SELECT photo_upload.id_photo as pho_id,files.filename as file,photo_upload.photo_name as name,user.user_name as user,user.user_id as u_id, photo_upload.tag_id as tag,photo_upload.id_photo as id from photo_upload INNER JOIN user ON user.user_id = photo_upload.user_id INNER JOIN tag_topic ON tag_topic.tagging_id = photo_upload.tag_id INNER JOIN文件在files.id = photo_upload.id WHERE tag_topic.tagging_id = \''。$ tag。'\'';因爲我在光照表中使用了逗號分隔的tagid,所以我無法執行這個sql。 – Mhansi
謝謝我用LIKE完成了這個:) – Mhansi
MySQL有一個功能FIND_IN_SET()
可以用於此:
SELECT * FROM Table WHERE FIND_IN_SET("tag", keywords) > 0
- 1. 步進通過在Java中
- 2. 在OpenCL中循環步進
- 3. MySQL:在進一步計算中使用聚合結果
- 4. 在Java中的DataInputStream中來回步進
- 5. MySQL的SUM()在步步爲收入
- 6. Node.js中的同步mysql
- 7. 在Marketplace中進行結算的步驟
- 8. MVP異步進步的WinForms
- 9. Servlet中的異步進程
- 10. matplotlib中的步進函數
- 11. C中的進程同步
- 12. Python中的進程同步
- 13. 進度條沒有顯示iphone中的一步一步進展
- 14. 在iOS中進行異步調用同步的最佳做法?
- 15. 進步
- 16. 進一步改進MySql查詢結果訂購
- 17. 在同步內進行異步調用
- 18. 在Mysql中殺死進程?
- 19. 在mysql中同步存儲過程
- 20. 在PHP中同步Firebird與MySQL
- 21. 在MySQL同步中需要幫助
- 22. 如何在以下分析中進行進一步的分類?
- 23. 在Unity3d中通過UNET進行同步
- 24. 在Xcode中運行與步進
- 25. 在javascript中同步兩個進程
- 26. 在Java中觸發異步進程
- 27. 在wxPython中有互通異步進程
- 28. 在Ajax中進一步處理信息?
- 29. 的Sql進步和
- 30. MySQL的訂購查詢 - 進一步的問題
你能證明你期望的結果樣品記錄? –
有...查詢嗎? – jordanm
爲什麼你會在mysql中存儲一個以逗號分隔的列表? –