id name
1 name1
2 name2
3 name3
4 name4
表B
id userlist
1 1,2,3,4
我做什麼,現在是
SELECT `userlist` FROM `table B` WHERE `id` = 1
然後保存結果並投入第二查詢
SELECT `name` FROM `table A` WHERE `id` in ($userlist)
只是想知道如果有更好的方法。我試試
SELECT `name` FROM `table A` WHERE `id` in (SELECT `userlist` FROM `table B` WHERE `table B`.`id` = 1)
但它只返回1個結果。
編輯*
DB結構不能改變,因爲裏面的數據太多了。我只是嘗試優化舊的代碼。
在表的單個字段中使用逗號分隔值通常是一個壞主意。你應該考慮你的數據表示。 – 2013-02-09 10:37:10
正常化您的數據庫,然後您可以使用'IN'或'WHERE EXISTS' – knittl 2013-02-09 10:40:07
參見[在數據庫列中存儲分隔列表真的很糟糕嗎?](http://stackoverflow.com/a/3653574) – eggyal 2013-02-09 10:48:55