听起来您的数据库如下所示:
users
-----
deviceID
pushToken
OS
subscriptions
-------------
deviceID
pushToken
如果是这种情况,您可以同时将 deviceID 和 pushToken 插入订阅表中,即使您只有使用这样的查询的 deviceID(假设“123ABC”是您要插入的 deviceID):
INSERT subscriptions (deviceID, pushToken)
SELECT deviceID, pushToken
FROM users
WHERE deviceID = '123ABC';
但是,这通常不被认为是一个好的数据库设计。通常,您不想在两个地方重复数据。在这种情况下,deviceID 和 pushToken 都存储在 users 表和 subscriptions 表中。这可能是一个改进:
users
-----
id
deviceID
pushToken
OS
subscriptions
-------------
id
user_id
如果您的数据库以这种方式构建,您可以使用此 SQL 将新记录插入订阅表中(同样对于“123ABC”的设备 ID):
INSERT subscriptions (user_id)
SELECT id
FROM users
WHERE deviceID = '123ABC';
我没有专门插入 id,因为我假设它将是数据库提供的自动递增的 id。
不必将 deviceID 放入订阅表中。只需拥有用户 ID 就足以“连接”这些表。您将使用 php 代码中的 SQL “连接”这些表。如果您想知道订阅 25 的用户的 deviceID 和 pushToken,SQL 可能如下所示:
SELECT deviceID, pushToken FROM users, subscriptions
WHERE users.id = subscriptions.user_id AND subscriptions.id = 25;
如果您想知道 deviceID 为“123ABC”的用户拥有的所有订阅,请尝试以下查询:
SELECT * FROM users, subscriptions
WHERE users.id = subscriptions.user_id AND user.deviceID = '123ABC';
希望这可以帮助。