INSERT INTO `images` (s_id, u_id, name, filename, filesize, uploaded)
SELECT s_id, ?, ?, ?, ?, ?
FROM servers
WHERE name = ?
当用户将图像上传到我的网站时,我正在使用此SQL语句。 s_id
字段是servers
表的外键,字段u_id
是users
表的外键。我想通过用户名(总是唯一的)从users表中选择用户ID(u_id),并在此insert语句中使用它。
我已经完成了选择服务器ID(s_id
)的部分,但这非常侥幸和搞乱。我不太确定如何使这个查询适应两个select语句?
感谢您的支持,谢谢!
答案 0 :(得分:0)
INSERT INTO `images` (s_id, u_id, name, filename, filesize, uploaded)
SELECT (select s_id from servers where name=?') as s_id,
(select user_id from users where username=?) as user_id,
?, ?, ?, ?;
答案 1 :(得分:0)
尝试:
DECLARE userID int
SELECT u_id FROM users into userID
WHERE useranem = ?
然后在INSERT中使用useriD变量。我是SQL Server用户,而不是MySQL,但从我读到的内容来看,我认为我的语法正确。
答案 2 :(得分:0)
我更喜欢这样的东西,以便你获得两个独特的索引扫描,这就是结束;只要表在唯一键和您希望返回的值上唯一索引。
insert into 'images' (s_id, u_id, name, filename, filesize, uploaded)
select ( select s_id
from servers
where name = ? )
, ( select u_id
from users
where username = ? )
, 'name'
, 'filename'
, 'filesize'
, 'uploaded'
from dual;
答案 3 :(得分:0)
我想知道为什么没有人提到
INSERT INTO `images` (s_id, u_id, name, filename, filesize, uploaded)
SELECT s_id, u_id, ?, ?, ?, ?
FROM servers JOIN users
WHERE name = ? AND username = ?
这是一个无条件的连接,但它应该只产生一行,给定的服务器和用户。