我有一個如此設置的表...這樣做很簡單,可以使問題更容易提出。在MySQL中查找具有相同屬性的條目
|id|hobby |person |enjoyment
-------------------------------
| |soccer |john |10
| |soccer |jake |5
| |baseball |john |3
| |baseball |nate |5
| |baseball |jordan |2
| |tennis |john |3
| |tennis |nate |7
| |chess |john |10
| |chess |nate |3
每個人都有一個他們喜歡一個特定的愛好多少分數。如果他們在數據庫中沒有記錄特定愛好的記錄,我們假定他們不參與。
給定1人,我需要知道誰至少參與了最相似的愛好。在上面的例子中,如果我選擇了約翰,那麼它應該將Nate設置爲(3),因爲他們共同擁有3種愛好(棒球,網球和象棋),傑克和約旦都會得到(1)
我可以做到這一點與當然多個查詢...
SELECT hobbies FROM tblname WHERE person='john';
SELECT person FROM tblname WHERE hobbies='baseball'
AND hobbies='tennis' AND hobbies='chess' AND name!='john'
並繼續這樣做,但它似乎INCREDIBLY低效率。
是否有一個優化的查詢來做這種事情?
加油 - 你可以做得比這更好! - 你的桌子上沒有名爲「愛好」的列 – Strawberry