mysql - 如何将我的列合并为一个以在 MySQL 中创建 URI?

标签 mysql

我想将四列合并到一个 URL 中:region_slug、category_slug、listing_slug 和 listing_id。以前,我一直使用 PHP 来执行此操作,但这可能是重复的,尤其是当我决定更改 URI 的格式时。我想要一个单一的别名来返回一个 URI,比如'{region_slug}/{category_slug}/{listing_slug}/{listing_id}。所以我基本上想做类似 <?php echo $result['listing_uri']; ?> 的事情我怎么能用我当前的查询来做到这一点:

        SELECT
            l.listing_id, l.slug AS listing_slug, r.region_id, r.slug AS region_slug, c.category_id, c.slug AS category_slug
        FROM listings AS l 
        LEFT JOIN categories AS c ON l.category_id = c.category_id
        LEFT JOIN regions AS r ON l.region_id = r.region_id

最佳答案

使用 CONCAT_WS,此函数允许您使用分隔符连接字符串:

SELECT
    l.listing_id AS listing_id,
    l.slug AS listing_slug, 
    r.region_id, r.slug AS region_slug, 
    c.category_id, c.slug AS category_slug,
    CONCAT_WS('/', region_slug, category_slug, listing_slug, listing_id) AS listing_uri
FROM 
    listings AS l 
LEFT JOIN 
    categories AS c ON l.category_id = c.category_id
LEFT JOIN 
    regions AS r ON l.region_id = r.region_id

关于mysql - 如何将我的列合并为一个以在 MySQL 中创建 URI?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35616176/

相关文章:

mysql - golang mysql undefined : sql. 查询

mysql - 如何编写这样复杂的查询?

java - 如何在java中检查新记录是否插入到数据库

mysql - 带 Where 子句的 Order By Rand()

mysql - SQL 计数(*)问题与涉及外部连接的 mysql 中的多个表连接

mysql - 通过输入限制 sql 函数生成的行数

php - MySQL 和 PHP : Searching for rows through a field in an undefined number of joined tables

c# - 如何在数据库C#中查找表的主键

php将变量传递到另一个页面

php - PHP返回整张MYSQL表数据