我有这些表:
School
|---------------------|------------------|------------------|
| SchoolID | City | State |
|---------------------|------------------|------------------|
| 1 | City1 | State1 |
|---------------------|------------------|------------------|
| 2 | City2 | State2 |
|---------------------|------------------|------------------|
| 3 | City3 | State3 |
|---------------------|------------------|------------------|
Teacher
|---------------------|------------------|
| Location | TeacherID |
|---------------------|------------------|
| City1 State1 | 123-A |
|---------------------|------------------|
| City2 State2 | 123-B |
|---------------------|------------------|
| City4 State4 | 123-C |
|---------------------|------------------|
因此,我试图通过结合School表中的城市和州并检查哪个SchoolID链接到哪个TeacherID来返回这样的查询:
|---------------------|------------------|
| TeacherID | SchoolID |
|---------------------|------------------|
| 123-A | 1 |
|---------------------|------------------|
| 123-B | 2 |
|---------------------|------------------|
| 123-C | 0 |
|---------------------|------------------|
到目前为止,这是我的代码
SELECT Teacher.TeacherID as TeacherID,
(
SELECT School.SchoolID
FROM School
WHERE CONCAT(School.City, ' ', School.State) = Teacher.Location
) AS SchoolID
FROM Teacher
但是,我得到的却是它:
|---------------------|------------------|
| TeacherID | SchoolID |
|---------------------|------------------|
| 123-A | 1 |
|---------------------|------------------|
| 123-B | 2 |
|---------------------|------------------|
| 123-C | null |
|---------------------|------------------|
所以我的问题是,当找不到查询时,如何将null替换为0?我尝试使用:
SELECT IFNULL(School.SchoolID, 0)
但它只会返回相同的内容。
答案 0 :(得分:1)
您需要将IFNULL应用于子选择的结果,而不是应用于子选择:
fun build(): String {
query?.let {
if (it.isNotEmpty()) {
val encodedQuery = encode(query)
}
}
}
答案 1 :(得分:1)
您必须对查询进行封装
SELECT Teacher.TeacherID as TeacherID,
IFNULL((
SELECT School.SchoolID
FROM School
WHERE CONCAT(School.City, ' ', School.State) = Teacher.Location
),0) AS SchoolID
FROM Teacher;
答案 2 :(得分:1)
我认为使用left join
select t.TeacherID, ifnull(s.SchoolID,0)
from Teacher t
left join School s on concat(s.City, ' ', s.State) = t.Location