我有以下查询,我想可能合并成一个或两个更大的查询:
SELECT user, password, email FROM users WHERE user = 'njp316' LIMIT 1;
INSERT IGNORE INTO collectors_users (username, password, email, dateadded, subscribed)
VALUES (user, password, email, NOW(), 'Y');
这个将拉回多行,所以它需要循环:
SELECT barcode FROM collections WHERE user = user;
INSERT IGNORE INTO collections_collections (username, barcode)
VALUES (user, barcode);
显然我不先进的SQL,所以只是寻找一些帮助。谢谢。
除非我错过了什么…这很简单:
INSERT IGNORE INTO collectors_users
(username, password, email, dateadded, subscribed)
SELECT user, password, email, NOW(), 'Y'
FROM users
WHERE user = 'njp316'
LIMIT 1;
INSERT IGNORE INTO collections_collections
(username, barcode)
SELECT user, barcode
FROM collections
WHERE user = user;
可以使用子选择
INSERT INTO collectors_users (username, password, email, dateadded, subscribed)
SELECT user, password, email, NOW(), 'Y' FROM users WHERE user='njp316' LIMIT 1;
它使用SELECT作为输入INSERT的数据源。注意,列的顺序很重要。
试试这个:
INSERT IGNORE INTO collectors_users (username, `password`, email, dateadded, subscribed)
SELECT `user`, `password`, email, NOW(), 'Y'
FROM users WHERE `user` = 'njp316' LIMIT 1;
INSERT IGNORE INTO collections_collections (username, barcode)
SELECT `user`,barcode
FROM collections WHERE `user` = 'njp316';