如果列为空,我如何从 Mysql 中的另一个 table 导入一些列?
How i can import some columns from another table in Mysql if column is null?
我该怎么做才能在 nav_page 不为空时将 page_name 导入为 nav_label 并将 page_slug 导入为 nav_url?
我不知道为我的网站做导航的更好主意,当我获取导航时,我总是想从 table 页面获取页面名称,以防在页面的名称或别名。
我试过这个查询但对我不起作用:
SELECT navigations.*, (CASE WHEN (navigations.nav_page IS NOT NULL) THEN pages.page_name AS page_label, pages.tr_slug AS page_url ELSE navigations.nav_label AS page_label, navigations.nav_url AS page_url END) FROM navigations, pages
页数Table
+---------+-----------+-----------+
| page_id | page_name | page_slug |
+---------+-----------+-----------+
| 1 | Home | /home |
| 2 | Contact | /contact |
+---------+-----------+-----------+
导航Table
+--------+-----------+------------------------+----------+----------+
| nav_id | nav_label | nav_url | nav_page | nav_type |
+--------+-----------+------------------------+----------+----------+
| 1 | Google | https://www.google.com | NULL | custom |
| 2 | NULL | NULL | 2 | page |
+--------+-----------+------------------------+----------+----------+
如果我没看错的话,你可以left join
:
select n.nav_id,
coalesce(p.page_slug, n.nav_url) as nav_url,
coalesce(p.page_name, n.nav_label) as nav_label,
n.nav_type
from navigations n
left join pages p on page_id = n.nav_page
我该怎么做才能在 nav_page 不为空时将 page_name 导入为 nav_label 并将 page_slug 导入为 nav_url?
我不知道为我的网站做导航的更好主意,当我获取导航时,我总是想从 table 页面获取页面名称,以防在页面的名称或别名。
我试过这个查询但对我不起作用:
SELECT navigations.*, (CASE WHEN (navigations.nav_page IS NOT NULL) THEN pages.page_name AS page_label, pages.tr_slug AS page_url ELSE navigations.nav_label AS page_label, navigations.nav_url AS page_url END) FROM navigations, pages
页数Table
+---------+-----------+-----------+ | page_id | page_name | page_slug | +---------+-----------+-----------+ | 1 | Home | /home | | 2 | Contact | /contact | +---------+-----------+-----------+
导航Table
+--------+-----------+------------------------+----------+----------+ | nav_id | nav_label | nav_url | nav_page | nav_type | +--------+-----------+------------------------+----------+----------+ | 1 | Google | https://www.google.com | NULL | custom | | 2 | NULL | NULL | 2 | page | +--------+-----------+------------------------+----------+----------+
如果我没看错的话,你可以left join
:
select n.nav_id,
coalesce(p.page_slug, n.nav_url) as nav_url,
coalesce(p.page_name, n.nav_label) as nav_label,
n.nav_type
from navigations n
left join pages p on page_id = n.nav_page