2017-03-16 97 views
0

我在與下一句的問題不存在:如何插入/凡在SQL

INSERT INTO `pasajeros` 
( 
    `nombre`, 
    `apellidos`, 
    `email`, 
    `password`, 
    `telefono` 
) 
VALUES 
(
    'Alexandra', 
    'Gonzalez', 
    '[email protected]', 
    '1234567!', 
    '04242344556' 
) 
WHERE NOT EXISTS 
( 
    SELECT * 
    FROM `transportistas` 
    WHERE `email` = '[email protected]' 
); 

什麼是錯在我的代碼?如果在另一個表中沒有使用電子郵件,我需要創建一個Insert。這是我的方法,但我無法弄清楚爲什麼我的查詢失敗。

+0

錯誤是什麼? – Krishna

+0

#1064 - 您的SQL語法錯誤;請檢查與您的MariaDB服務器版本相對應的手冊,以便在'WHERE NOT EXISTS'附近使用(在第1行的SELECT * FROM'transportistas' WHERE'email' ='[email protected]'' –

+0

http:// stackoverflow。 com/questions/485039/mysql-insert-where-query – Brad

回答

3

我不相信你可以使用Valueswhere條款。但你可以插入使用select語句,它可以處理where子句就好了。

INSERT INTO `pasajeros` 
( 
    `nombre`, 
    `apellidos`, 
    `email`, 
    `password`, 
    `telefono` 
) 
Select * from (
select 
    'Alexandra' as `nombre`, 
    'Gonzalez' as `apellidos`, 
    '[email protected]' as `email`, 
    '1234567!' as `password` , 
    '04242344556' as `telefono` 
    ) i 
WHERE NOT EXISTS 
( 
    SELECT * 
    FROM `transportistas` 
    WHERE `email` = i.email 
); 
+1

「'nombre' ='Alexandra'」 - 我不相信這樣的作品,你應該得到一個像「未知列nombre」的錯誤「 –

+0

@這樣的事情會在SQL服務器上工作...我從來沒有真正做過MySQL,你只能使用'as'來替代別名? – Brad

+0

@PaulSpiegel多數民衆贊成在糾正保羅。我得到這些錯誤,我該如何解決它? –

2

正確的方法做你想做的就是定義一個唯一索引/約束:

create unique index unq_pasajeros_email on pasajeros(email); 

數據庫然後將保護數據。

這比在應用層嘗試這樣做要好得多,因爲如果有人手動更新數據,它可以防止重複。

+0

什麼意思是unq_pasajeros_email?電子郵件必須在' pasaj eros'和'transportistas'表,這兩種情況下的字段被稱爲'email' –

+0

@CesarJrRodriguez。 。 。那麼你需要兩個獨特的索引,每個索引一個索引。但是,你的問題只涉及'pasajeros'。 –