有没有办法将我的查询自动更改为 table 到 运行?

Is there a way to automatically change which table to run my query?

SET @UserID = 21077;
SELECT*FROM DATA.tbl_7 where UserID = @UserID

目前用户数据根据其结尾的数字分开 例如,如果它以 1 结尾,我必须 运行 我对 DATA 的查询。tbl_1 这意味着每次我想 运行 查询每个用户 ID # 我必须更改我的查询行。 例如,如果我想查找 21079

的用户 ID
SET @UserID = 21079;
SELECT*From DATA.tbl_9 where UserID = @UserID

每次都改变“tbl_#”真的很困扰我。

我试过了

SET @UserID = 21079;
SET @UserIDTABLELOOKUP = (SELECT RIGHT(@UserID, 1));
SELECT*FROM DATA.tbl_ (@UserIDTABLELOOKUP) where UserID = @UserID;

但由于显而易见的原因,它不起作用。 是否有一种方法可以根据我设置的 UserID 将哪些数据 table 设置为“Select*From”数据 table?

尝试这样的事情:

SET @UserID = 21079;
SET @UserIDTABLELOOKUP = (SELECT RIGHT(@UserID, 1));
SET @script = CONCAT('SELECT * FROM DATA.tbl_', @UserIDTABLELOOKUP, ' WHERE UserID = ?');
PREPARE stmt FROM @script;
EXECUTE stmt USING @UserID;
DEALLOCATE PREPARE stmt;