我有三個表來定義用戶: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語句每次執行外部查詢必須更快,對吧?
MySQL“in clause”中的項目數
Helenr
2019-09-02 16:15:59