簡體   English   中英

INSERT有兩個SELECT語句

[英]INSERT with two SELECT statements

這是我目前正在嘗試但我收到一個mySQL錯誤:

mysql_query ("INSERT INTO profile_tag (profile_id, tag_id) 
(SELECT profile_id FROM profile WHERE username = '$username'), 
(SELECT tag_id FROM  tag WHERE  tag = '$music' OR tag = '$sports' OR tag = '$tech')"); 

我能夠使用單個SELECT語句完成INSERT但不能兩個。

我收到的錯誤:

查詢無效:您的SQL語法中有錯誤; 查看與您的MySQL服務器版本對應的手冊,以便在第1行附近使用'(SELECT tag_id FROM tag WHERE tag = '' OR tag = 'sports' OR tag = '')'附近使用正確的語法

就像錯誤說的那樣,語法不正確。 insert的值必須與列定義中的值數相匹配。

INSERT INTO profile_tag (profile_id, tag_id)
SELECT
    profile_id, tag_id
FROM
    profile
    CROSS JOIN tag
WHERE
    username = ?
    AND tag IN (?, ?, ?)

請注意,如果為每個輸入找到tag值,這將插入行,但我相信這就是您想要的。

您可以使用VALUES子句

insert into profile_tag(user_id, tag_id) values
((select id from users where username = 'alice'),
 (select id from tags where tag = 'music'));

http://sqlfiddle.com/#!2/76439/1/0

mysql_query ("INSERT INTO profile_tag (profile_id, tag_id) 
(SELECT profile.profile_id, tag.tag_id FROM profile LEFT JOIN tag ON 1 WHERE profile.username = '$username' AND tag.tag IN ('$music', '$sports', '$tech'))"); 

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM