Нет, SQL не имеет ничего подобного. В конце концов, на какую таблицу он будет ссылаться при выборе из нескольких таблиц? Позволяет присвоить таблице локальное имя (select * from foo as bar
), но его нельзя использовать в качестве имени таблицы при вложенном выборе.
Ваш единственный шанс - каким-то образом добраться до сопоставления от ключа к имени таблицы.
Если это какая-то библиотека, к которой у вас нет доступа, но вы можете, по крайней мере, получить доступ к соединению с базой данных (sqlite3 *
в C / C ++), вы можете настроить авторизатор, чтобы увидеть, к каким таблицам библиотека читает, чтобы перепроектировать это. Вы могли бы злоупотребить им до такой степени, что вы бы вызвали один запрос со значением 'false', поэтому он ничего не возвращает, но авторизатор вызывается с нужным вам именем таблицы, а затем совершает реальный вызов с правильным where. Но это довольно сложно, поэтому попробуйте сначала упростить сопоставление.
Я должен добавить, что это выглядит как действительно плохой дизайн. Разделение записей одного типа по нескольким таблицам является ненужным осложнением (sqlite не имеет каких-либо ограничений, о которых вы бы заботились), и если типы отличаются, вам все равно нужно знать, что это такое, поэтому API должен быть явно указан для таблицы или хотя бы определенные правила отображения.