已编辑:将数据作为表格而不是屏幕截图
与我遇到的另一个问题有点类似,但是对于一个班级项目,我们正在使用此查询:
SELECT E1.EmployeeID, E1.FirstName, E1.LastName
FROM EMPLOYEE E1
WHERE EXISTS
(SELECT C1.LastName
FROM CUSTOMER C1
WHERE E1.LastName = C1.LastName
AND E1.FirstName = C1.FirstName);
在MySQL中有效,并返回3行。但是,尽管两个数据库具有相同的数据,它在Oracle中都不会返回任何结果。 Oracle没有给出错误消息,只是显示“没有要显示的项目”。
据我所知,两个数据库中的数据相同,并且应该返回出现在Customer和Employee表中的四行。如果有人能指出为什么会有不同的结果,我将不胜感激。
以下数据:
| EmployeeID | LastName | FirstName |
|------------|-----------|-----------|
| 1 | Bibler | Karl |
| 2 | Chagoya | Cody |
| 3 | Ney | Treyvor |
| 4 | Logue | Nathan |
| 5 | Carrillo | Francisco |
| 6 | Centeno | Paulina |
| 7 | Kruk | Christy |
| 8 | Montana | Tony |
| 9 | Lara | John |
| 10 | Chaves | Pancho |
| 11 | Smith | Yazmin |
| 12 | Garcia | Lydia |
| 13 | Smith | Will |
| 14 | Lopez | Jennifer |
| 15 | Oneal | Shaq\` |
| 16 | Rose | Derrick |
| 17 | Williams | Serena |
| 18 | Basseti | Feddy |
| 19 | James | Lebran |
| 20 | Fernandez | Vincent |
和客户:
| lastname | firstname |
|----------|-----------|
| Bibler | Karl |
| Chagoya | Cody |
| William | Thomas |
| Logue | Nathan |
| etc | etc |
两者都有20行,但其中只有三行是返回的唯一行。
答案 0 :(得分:0)
当我在employee表上运行SELECT *查询时,它显示FirstName和LastName列宽得多。不知何故,这些列的名称后面都有空格,因此它们不会注册为与customer表相同的数据。
使用TRIM功能,我可以获得所需的结果。
SELECT E1.EmployeeID, E1.FirstName, E1.LastName
FROM EMPLOYEE E1
WHERE EXISTS
(SELECT C1.LastName
FROM CUSTOMER C1
WHERE TRIM(E1.LastName) = TRIM(C1.LastName)
AND TRIM(E1.FirstName) = TRIM(C1.FirstName));