我有一个产品表,每个产品都有一个类别字段(这不是我要更改的,我需要从中读取数据),我想从产品表中更新一个仅包含唯一类别的类别表(我也使用 aIFNULL
来处理空类别),这是我目前所拥有的:
string query = "INSERT INTO categories (name)
SELECT DISTINCT(IFNULL(category, \"Uncategorized\")) AS category_name
FROM products
WHERE NOT EXISTS (
SELECT name FROM categories
WHERE name = category_name)";
通过上面的查询,我可以使用唯一的类别字段更新类别,并且每次我需要运行它时,它只会将不存在的类别添加到表中。
但除了上述内容之外,我还需要包含一个配置文件 ID,每个类别都插入了类似这样的内容,但这是行不通的:
string query = "INSERT INTO categories (profile_id, name)
SELECT " + profileId.ToString() + ",
DISTINCT(IFNULL(category, \"Uncategorized\")) AS category_name
FROM products
WHERE NOT EXISTS (
SELECT name FROM categories
WHERE name = category_name
AND profile_id = @profileId)";
有没有办法通过查询来完成这个?
上面给了我一个信息:
SQLite error near "DISTINCT": syntax error
SqliteMan 错误:
Query Error: near "DISTINCT": syntax error Unable to execute statement
让我知道我是否还不清楚,我应该更清楚什么。