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