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字段时,特方便。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值