mysql函数助力多表套接查询

场景:dict存有常用值,value+name,area存有citycode和cityname,supplier存有price/citycode/value,在使用时,想通过value或citycode联查3表,就可用到函数。

1、编写函数

   函数的编写类似建表脚本,如下:

CREATE DEFINER = `root`@`%` FUNCTION `getNameEn`(
    txt VARCHAR(255) ,
    value int(10)
) RETURNS VARCHAR(255) CHARSET utf8

BEGIN

DECLARE nameEn VARCHAR(255) DEFAULT '';

SELECT
    vi.val --想查出的列--
FROM
    v_i18n vi
WHERE
    vi.value = i18nValue--参数1-- AND vi.txt = i18nTxt--参数2-- INTO nameEn;

RETURN
    nameEn ;
END

上面的函数中,最关键就是红色的2个参数,等会会要用到。


2、函数的使用

如想通过函数查出dict表中operation对应的英文名(存放在i18n表中):

SELECT
    v.pid ,
    getI18nEn(//函数名
        v.operation_type ,//与value对应,即 vi.value = i18nValue
        v.operation_name//与txt对应,即vi.txt = i18nTxt

    ) AS operation_en //翻译过来,即“select val from i18n vi where v.operation_type =vi.value and v.operation_name = vi.txt"

from xx v

3、功能

适用于需要几个表join且没有能一一对应或多对一的on字段时,特方便。


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部