中项MySQL_MySQL“in clause”中的项目数

我有三个表来定义用户:

USER: user_id (int), username (varchar)

USER_METADATA_FIELD: user_metadata_field_id (int), field_name (varchar)

USER_METADATA: user_metadata_field_id (int), user_id (int), field_value (varchar)

我想创建一个中间层用户,该用户可以访问应用程序中的其他用户。要确定登录使用的用户可以访问哪些用户,我使用如下的子查询:

SELECT user_id FROM user WHERE user_id

IN (SELECT user_id

FROM user_metadata

WHERE user_metadata_field_id = 1 AND field_value = 'foo')

目前,我将子查询字符串存储在变量中,然后在每次需要提取用户列表时将其动态插入到外部查询中。在这样做之后,我想,“只需存储一串实际的user_ids 就更好了”。

所以不要将其存储在变量中......

$subSql = "SELECT user_id FROM user_metadata WHERE user_metadata_field_id = 1 AND field_value = 'foo'";

...我实际执行查询并存储结果,如...

$subSql = "12, 56, 89, 100, 1234, 890";

然后当我需要拉出登录用户可以访问的点亮用户时,我可以这样做:

$sql = "SELECT user_id FROM user WHERE user_id IN ($subSql)";

最后问题是:

您可以在MySQL INCLAUSE中使用多少项?存储实际的id而不是sub-sql语句每次执行外部查询必须更快,对吧?

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值