2011-05-03 72 views
0

不工作,我不明白爲什麼我的查詢是不工作:MySQL查詢在phpMyAdmin

INSERT INTO `jos_acymailing_subscriber`(`sleep_breathe`) 
    VALUE (`1`) 

SELECT `subid` 
    FROM `jos_acymailing_listsub` 
    WHERE `listid` = `8` 
    LEFT JOIN `jos_acymailing_subscriber` 
    ON `jos_acymailing_listsub`.`subid` = `jos_acymailing_subscriber`.`sleep_breathe` 

THX

我有用戶的表給訂閱了一個郵件列表(的標識我感興趣的是8)。訂閱表是一個簡單的中介表「多對多」的關係

在用戶表我想在一個領域與1添加該訂閱列表8

所以用戶整數我需要首先選擇位於listid爲8的中間表中的用戶,然後在用戶表中的sleep_breathe字段中添加1。

用戶表結構:名稱:jos_acymailing_subscriber

字段類型Null默認註釋 子編號INT(10)否
電子郵件VARCHAR(200)無
用戶ID INT(10)是NULL
名VARCHAR( 250)否
創建INT(10)是NULL
確認TINYINT(4)無0
啓用TINYINT(4)否1個
接受TINYINT(4)否1
IP VARCHAR(100)是NULL
HTML TINYINT(4)否1
鍵VARCHAR(250)是NULL
ersmembershipnumber VARCHAR(250)是NULL
第一VARCHAR(250)是NULL
標題VARCHAR( 250)是NULL
ERJ VARCHAR(250)是NULL
ERR VARCHAR(250)是NULL
專着VARCHAR(250)是NULL
呼吸VARCHAR(250)是NULL
membershipcategory VARCHAR(250)是NULL
mship_status VARCHAR(250)是NULL
COPD VARCHAR(250)是NULL
sleep_breathe VARCHAR(250)是NULL
親VARCHAR(250)是NULL

中介表結構:名稱:jos_acymailing_listsub

字段類型Null默認註釋 listid SMALLINT(11)否
子編號INT(11)否
SUBDATE INT(11)是NULL
unsubdate INT(11)Y es NULL
status tinyint(4)否

+1

什麼是不工作?你會得到什麼錯誤信息? – 2011-05-03 13:13:44

+2

這些是兩個查詢。 – Thilo 2011-05-03 13:14:30

+0

有兩個查詢...一個接一個執行 – diEcho 2011-05-03 13:16:52

回答

3

我認爲問題是你已經把VALUE而不是VALUES

即使只有一個要插入的值,它仍然是VALUES

+0

Thx但仍然不能工作 – Wiglaf 2011-05-03 13:20:57

0

正如其他人所說,這是兩個疑問。另外,VALUES不是VALUE。第三,我不確定MySQL在JOIN之前是否允許WHERE。您的查詢可能必須是

INSERT INTO `jos_acymailing_subscriber`(`sleep_breathe`) VALUES (`1`); 

SELECT `subid` 
FROM `jos_acymailing_listsub` 
LEFT JOIN `jos_acymailing_subscriber` 
ON `jos_acymailing_listsub`.`subid` = `jos_acymailing_subscriber`.`sleep_breathe` 
WHERE `listid` = `8; 
0

該聲明中有幾個錯誤。

  • 如果要插入從SELECT語句檢索到的值,則不需要VALUES子句(實際上它是錯誤的)。
  • 數字不得放入引號或反引號內。
  • FROM和LEFT JOIN關鍵字的順序混淆了。

查詢插入從SELECT檢索到的將是值:

INSERT INTO jos_acymailing_subscriber (sleep_breathe) 
SELECT 1 
FROM jos_acymailing_listsub 
    LEFT JOIN jos_acymailing_subscriber 
    ON jos_acymailing_listsub.subid = jos_acymailing_subscriber.sleep_breathe 
WHERE listid = 8 

一個建議:忘了可怕的反引號產品總數這樣你就不會感到困惑在哪裏以及你需要他們的東西。

+0

好吧,所以我覺得很錯。我想在sleep_breathe字段中插入1,但對於訂閱了listid 8的訂閱者。我想做一個插入,就像一個帶有左連接的選擇... – Wiglaf 2011-05-03 13:26:24

+0

@Wiglaf:請參閱我的編輯 – 2011-05-03 13:36:02

+0

我不是當然我明白..你把價值插入的地方? – Wiglaf 2011-05-03 13:41:57

0

(1)插入時應該是VALUES而不是VALUE。 (2)left joinfrom子句的一部分。將where子句移到最後。