MySQL查询列表中的所有现有和不存在的条目(内联表)

时间:2015-12-10 18:40:28

标签: mysql sql

我有一个带有标签名称表的MySQL数据库。我有一个我想分配的标签列表,需要检查它们是否在数据库中。因此,我想写一个查询,它给出了列表中已经存在的所有标签的ID以及尚未出现的标签。

在SQLite中我已经设法编写了这个查询,但因为它包含一个CTE,所以它不能直接转换为MySQL。

SQLite查询是:

WITH
check_tags(name) AS ( VALUES ("name1"), ("name2) )
SELECT check_tags.name, tags.id FROM check_tags
LEFT JOIN tags ON check_tags.name = tags.name

结果将是例如:

   id   | name
   ---------------
   1    | name1
   Null | name2

在MySQL中,它可能是我在其他数据库系统中看到SELECT * FROM ( VALUES("name1), ("name2") ) ...的东西,但这也不能与MySQL一起使用。 所有这些不同的SQL方言都难以寻找帮助。

1 个答案:

答案 0 :(得分:1)

答案是使用inline table,正如Aaron Kurtzhals指出的那样。 我的查询现在是:

CREATE TEMPORARY TABLE MyInlineTable (id LONG, content VARCHAR(255) );

INSERT INTO MyInlineTable VALUES
(1, 'name1'),
(2, 'name2');

SELECT * from MyInlineTable LEFT JOIN tags on MyInlineTable.content = tags.name