MySQL条件(如果在电话簿中存在行,则显示用户名)

时间:2015-03-28 20:40:29

标签: mysql

我的电话簿表包含用户联系人numbername。我也有消息表(textnumberdate等。)

如果消息表中有记录或号码,我需要从电话簿中获取联系人姓名。

我试过了:

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 - '字段列表'中的未知列'名称')

抱歉英文不好。

1 个答案:

答案 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