Search code examples
mysqlmysql-error-1064

MySql Where-Subquery syntax error


This code worked in Sqlite which i have more experience with. I cant figure out whats wrong here. If it helps SELECT 1 FROM Post WHERE body = 'a'; doesnt give me a syntax error but this does

select 1 WHERE NOT EXISTS (SELECT 1 FROM Post WHERE body = 'a' ) ;

code:

INSERT INTO `Post` (
`name`,
...
`date`) select 
@0,
...
@6 WHERE NOT EXISTS (SELECT 1 FROM Post WHERE body =  @7 ) 

error

near 'WHERE NOT EXISTS (SELECT 1 FROM Post WHERE body =  'text' )' at line 15

Solution

  • Try using dual as the dummy table in your select (see here).

    INSERT INTO `Post` (
    `name`,
    ...
    `date`) select 
    @0,
    ...
    @6 
    FROM DUAL
    WHERE NOT EXISTS (SELECT 1 FROM Post WHERE body =  @7 ) 
    

    From the referenced link:

    You are allowed to specify DUAL as a dummy table name in situations where no tables are referenced:

    mysql> SELECT 1 + 1 FROM DUAL; -> 2