我的电话簿表包含用户联系人number
和name
。我也有消息表(text
,number
,date
等。)
如果消息表中有记录或号码,我需要从电话簿中获取联系人姓名。
我试过了:
SELECT
owner, sender, LEFT(text, 28) AS text, date, status,
IF((SELECT name FROM phonebook WHERE number = sender), name, sender)
FROM
messages ORDER BY id DESC LIMIT 30
但它不起作用。 ( 1054 - '字段列表'中的未知列'名称')
抱歉英文不好。
答案 0 :(得分:0)
您使用LEFT JOIN
执行此操作。如果没有电话簿记录,则名称为NULL
,因此COALESCE
会返回第二个参数,即sender
。
SELECT
owner, sender, LEFT(text, 28) AS text, date, status, COALESCE(name, sender)
FROM messages
LEFT JOIN phonebook ON number = sender
ORDER BY id DESC LIMIT 30