我有一个带有标签名称表的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方言都难以寻找帮助。
答案 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