sql - 从两个表中查询SQLite-选择要返回的值

标签 sql sqlite

我有两个表,例如

表格1

ID  |  Prop1  |  Prop2  |  Prop3
--------------------------------
 1  |    a    |   b     |   c
 2  |    d    |   e     |   f


表2

Name  |  ID  |  Prop1  |  Prop2
-------------------------------
 i    |   1  |   aa    |  null


我想做的是返回(不修改)与Table2.Name ='i'对应的Table1行,但Table2的值不为null(如果存在)。结果应如下所示:

ID  |  Prop1  |  Prop2  |  Prop3
--------------------------------
 1  |    aa   |   b     |   c

最佳答案

您可以使用IFNULL(x, y)代替NULL的值:

SELECT
    t1.ID
   ,IFNULL(t2.Prop1, t1.Prop1) AS Prop1
   ,IFNULL(t2.Prop2, t1.Prop2) AS Prop2
   ,IFNULL(t2.Prop3, t1.Prop3) AS Prop3
FROM
    Table1 t1
LEFT JOIN
    Table2 t2
    ON
    t1.ID = t2.ID


请注意,IFNULL()仅接受两个参数。如果您认为您可能会在某个时候添加更多表,请切换到COALESCE()

SELECT
    t1.ID
   ,COALESCE(t2.Prop1, t1.Prop1) AS Prop1
   ,COALESCE(t2.Prop2, t1.Prop2) AS Prop2
   ,COALESCE(t2.Prop3, t1.Prop3) AS Prop3
FROM
    Table1 t1
LEFT JOIN
    Table2 t2
    ON
    t1.ID = t2.ID

关于sql - 从两个表中查询SQLite-选择要返回的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14716642/

相关文章:

sql - 使用 INNER JOIN 删除错误 PostgreSQL

iphone - iOS:带有书签SQL数据库的问题

java - SQLite Android 根据今天是哪一天获取数据库信息

c++ - Qt 无法打开文件 'sqlite3.lib'

mysql - 在连接查询中优化 order by 子句

mysql - GROUP BY 附近的 SQL 语法错误

php - 照亮\数据库\QueryException SQLSTATE HY000 : General error: 1215

sql - 将 PostgreSQL 表连接到另一个表的列

c - 选择上的 sqlite3_bind_text,准备好的 vs 字符串 SQL 语句的结果不同

android.database.Cursor registerContentObserver