【发布时间】:2013-02-09 10:34:53
【问题描述】:
表 A
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 个结果。
编辑*
数据库结构无法更改,因为里面有这么多数据。我只是尝试优化旧代码。
【问题讨论】:
-
在表的单个字段中使用逗号分隔值通常是个坏主意。您应该考虑您的数据表示。
-
标准化你的数据库,然后你可以使用
IN或WHERE EXISTS -
"数据库结构无法更改,因为里面有这么多数据" - 为什么数据库中的数据量会阻止您更改其结构?架构更改可以通过为您执行所有重组的数据库查询来实现。
-
@eggyal 哦,好的。但是我需要确保所有新的插入数据都可以在更改数据库之前匹配这个新的数据库结构?如果不是,它可能会导致错误。目前,我只是一点一点地优化,没有做大的改变,因为我并不完全了解整个架构
标签: mysql