我有三個(gè)表來定義用戶: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)我想創(chuàng)建一個(gè)中間層用戶,該用戶可以訪問應(yīng)用程序中的其他用戶。要確定登錄使用的用戶可以訪問哪些用戶,我使用如下的子查詢: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')目前,我將子查詢字符串存儲(chǔ)在變量中,然后在每次需要提取用戶列表時(shí)將其動(dòng)態(tài)插入到外部查詢中。在這樣做之后,我想,“只需存儲(chǔ)一串實(shí)際的user_ids 就更好了”。所以不要將其存儲(chǔ)在變量中......$subSql = "SELECT user_id FROM user_metadata WHERE user_metadata_field_id = 1 AND field_value = 'foo'";...我實(shí)際執(zhí)行查詢并存儲(chǔ)結(jié)果,如...$subSql = "12, 56, 89, 100, 1234, 890";然后當(dāng)我需要拉出登錄用戶可以訪問的點(diǎn)亮用戶時(shí),我可以這樣做:$sql = "SELECT user_id FROM user WHERE user_id IN ($subSql)";最后問題是:您可以在MySQL INCLAUSE中使用多少項(xiàng)?存儲(chǔ)實(shí)際的id而不是sub-sql語句每次執(zhí)行外部查詢必須更快,對(duì)吧?
MySQL“in clause”中的項(xiàng)目數(shù)
Helenr
2019-09-02 16:15:59