更新MySQL视图中的值[重复]

问题描述 投票:0回答:1

这个问题在这里已有答案:

假设我们有这些表:

事件

id | name  | time      | action | entered
---+-------+-----------+--------+--------
 1 | james | today     | x      |
 1 | james | today     | x      | yes
 1 | james | today     | y      |
 1 | james | today     | y      | yes
 2 | carl  | today     | x      | 
 2 | carl  | today     | y      |
 3 | casey | yesterday | x      |
 3 | casey | yesterday | x      | yes
 3 | casey | yesterday | y      |
 3 | casey | yesterday | y      | yes
 4 | john  | today     | x      | yes

用户

name  | email        |   
------+--------------+
james | james@email  |   
casey | casey@email  |

我可以创建一个产生以下内容的视图吗?:

EventsView

id | name        | time      | action | entered
---+-------------+-----------+--------+--------
 1 | james@email | today     | x      |
 1 | james@email | today     | x      | yes
 1 | james@email | today     | y      |
 1 | james@email | today     | y      | yes
 2 | carl        | today     | x      | 
 2 | carl        | today     | y      |
 3 | casey@email | yesterday | x      |
 3 | casey@email | yesterday | x      | yes
 3 | casey@email | yesterday | y      |
 3 | casey@email | yesterday | y      | yes
 4 | john        | today     | x      | yes

也就是说,我希望看到我收到电子邮件的用户名,而不是名称本身。可能?

mysql database
1个回答
1
投票

实现此目的的一种方法是使用left join以及coalesce函数,该函数将返回其参数的第一个非null值。像这样:

select 
  e.id, coalesce(u.email, e.name) name, e.time, e.action, e.entered
from events e 
left join users u on e.name = u.name

Live example with a view.

© www.soinside.com 2019 - 2024. All rights reserved.