sql - 条件表达式 MS Access 中的 SQL 数据类型不匹配
问题描述
我有个问题。
当我尝试运行此查询时:
SELECT Artiesten.ID AS txtArtiestId,
NULL AS txtAlbumId,
NULL AS txtNummerId,
Artiestnaam AS Artiesten,
NULL AS Albums,
NULL As Nummers
FROM Artiesten
WHERE Artiesten.Artiestnaam LIKE '*On*'
UNION ALL
SELECT
Artiesten.ID AS txtArtiestId,
Albums.ID AS txtAlbumId,
NULL AS txtNummerId,
Artiesten.Artiestnaam AS
Artiesten, Naam AS Albums,
NULL As Nummers
FROM Albums
INNER JOIN Artiesten ON Albums.ArtiestId = Artiesten.ID
WHERE albums.naam LIKE '*On*'
UNION ALL
SELECT
Artiesten.ID AS txtArtiestId,
Albums.ID AS txtAlbumId,
Nummers.ID AS txtNummerId,
Artiesten.Artiestnaam AS Artiesten,
Albums.Naam AS Albums,
Nummers.Naam AS Nummers
FROM (Nummers INNER JOIN Albums ON Nummers.AlbumId = Albums.ID)
INNER JOIN Artiesten ON Albums.ArtiestId = Artiesten.ID
WHERE Nummers.Naam LIKE '*On*'
它说:
“条件表达式中的数据类型不匹配”
现在我已经知道它必须与第一个和最后一个查询有关。这两个一起导致了错误。
我究竟做错了什么?
解决方案
您可以通过NULL
在第一个查询中提供适当的类型来解决此问题:
SELECT Artiesten.ID AS txtArtiestId,
int(NULL) AS txtAlbumId,
int(NULL) AS txtNummerId,
Artiestnaam AS Artiesten,
str(NULL) AS Albums,
str(NULL) As Nummers
FROM Artiesten
WHERE Artiesten.Artiestnaam LIKE '*On*'
实际上,我不确定正确的类型是什么。我只是猜测。
推荐阅读
- symfony - 在命令 symfony 3.4 上获取项目目录
- java - 如何在 lambda 流中查找搜索条件中的最后一个对象并将其删除
- date - 更改容器内的日期
- azure - Azure AD - B2B 用户可以查看组成员
- python - 如何使用 warnings.simplefilter() 忽略 SettingWithCopyWarning?
- android - 为什么尝试在其中加载html字符串时,中文字符在webView中无法正确显示
- scala - Flink Avro 状态演变
- python - 嵌套查询中的不一致行为
- docker - 为什么本地 docker 连接的 ansible 这么慢?
- c++ - 如何打包一个游戏的资产,只让引擎能够读取?