Php Mysql检查WHERE字段(多个_值)

Php Mysql检查WHERE字段(多个_值),php,mysql,Php,Mysql,大家早上好 我正在尝试使用smarty MySql单行代码来为我做这件事,而不是使用更多的PHP代码或多个sql行…现在就开始吧 我有一个老式的mysql(我将很快转换为PDO*),它是这样的: $query_list_releases = "SELECT * from mya_projects WHERE shared_to IN ('".$_id."') ORDER by deadline ASC"; 但是共享\u to字段格式类似于1,3,15,16或1,4,6(id由逗号分隔)。如果s

大家早上好

我正在尝试使用smarty MySql单行代码来为我做这件事,而不是使用更多的PHP代码或多个sql行…现在就开始吧

我有一个老式的mysql(我将很快转换为PDO*),它是这样的:

$query_list_releases = "SELECT * from mya_projects WHERE shared_to IN ('".$_id."') ORDER by deadline ASC";
但是共享\u to字段格式类似于1,3,15,16或1,4,6(id由逗号分隔)。如果shared\u to只是一个数字,它会工作,因为它会搜索shared\u to==to my$\u id的行。但棘手的是,shared\u to超过1个数字,都用逗号分隔

我需要选择我在shared_to列中找到的所有行,比如说“1”

有人知道我该怎么做吗?

在mysql中使用

在mysql中使用


您的数据库未正确规范化,这就是您遇到此问题的原因。我选择添加好友ID,每个共享项都以逗号分隔,而不是单独的行,因为我从另一个项目移植了一段代码,当时的想法是这样的。如果这会困扰我,我将切换到为每个共享项插入的行。谢谢。你的数据库没有正常化,这就是为什么你会有这个问题。我选择添加好友ID,每个东西都以逗号分隔,而不是单独的行共享,因为我从另一个项目移植了一个代码,它被认为是这样的。如果这会困扰我,我将切换到为每个共享项插入的行。谢谢,伙计。需要注意的是,这不应该用于大表,因为它必须检查所有行以构建结果集。好吧,我做了一个快速计算,并将结果置于可能的大表之上,该大表将在大约3年内形成。200万个结果会被记录为一个大表吗?@AdrianTanase 200万条记录足以感受到差异:)@Jack那么……你认为我应该如何继续?……我应该说10行不同的数据包含id,而不是1列包含10个id,用逗号分隔?我知道这个函数FIND_IN_SET正在搜索表中的所有“百万”行…但是如果我在这个表中已经有一百万行乘以平均10个“特定用户的共享数”/行,它将变成1000万,这个新表…@adriantase区别在于你可以使用一个优化的索引;您还可以对表进行分区或应用其他水平缩放实践。需要注意的是,这不应用于大型表,因为它必须检查所有行以构建结果集。好的,我做了一个快速计算,并将结果放在大约3年后形成的可能大型表的顶部。200万个结果会被记录为一个大表吗?@AdrianTanase 200万条记录足以感受到差异:)@Jack那么……你认为我应该如何继续?……我应该说10行不同的数据包含id,而不是1列包含10个id,用逗号分隔?我知道这个函数FIND_IN_SET正在搜索表中的所有“百万”行…但是如果我在这个表中已经有一百万行乘以平均10个“特定用户的共享数”/行,它将变成1000万,这个新表…@adriantase区别在于你可以使用一个优化的索引;您还可以对表进行分区或应用其他水平缩放实践。
SELECT * from mya_projects
WHERE FIND_IN_SET( id, shared_to)
ORDER by deadline ASC