Mysql 使用函数的SQL视图(phpMyadmin)

Mysql 使用函数的SQL视图(phpMyadmin),mysql,sql,function,Mysql,Sql,Function,感谢您的帮助,我在我的数据库中创建了一个名为“人员”的视图,该视图使用三个函数从名为“用户”和“用户兴趣爱好”的两个表中检索数据,这三个函数分别称为“isUserVerified”、“hasUserPicture”和“UserHabiods”: SELECT `u`.`id` AS `id`, `isUserVerified`(`u`.`id`) AS `verification`, `hasUserPicture`(`u`.id) AS `profile_pictur

感谢您的帮助,我在我的数据库中创建了一个名为“人员”的视图,该视图使用三个函数从名为“用户”和“用户兴趣爱好”的两个表中检索数据,这三个函数分别称为“isUserVerified”、“hasUserPicture”和“UserHabiods”:

SELECT 
    `u`.`id` AS `id`,
    `isUserVerified`(`u`.`id`) AS `verification`,
    `hasUserPicture`(`u`.id) AS `profile_picture`,
    `userHobbies`(`h`.`user_id`) AS `hobbies` 
FROM 
    `people`.`users` u
INNER JOIN
   `people`.`user_hobbies` h
ON 
   `h`.`user_id` = `u`.`id` 
它返回以下输出:

我意识到这是因为我加入了:

`h`.`user_id` = `u`.`id`

但这不是我想要的。对于每个用户,我想运行树函数并返回,如果他们被验证,有一个配置文件图片和一个爱好。我期待10个用户的相关信息。你能帮忙吗?谢谢

您可以将
内部联接
替换为
左联接
,以查看所有用户,因为
用户
表位于
联接
关键字的左侧,并且
内部
查找条件中的精确匹配。e、 g.如果没有将特定用户id插入嗜好表,则
内部联接不会返回相关行

我认为您根本不需要加入
嗜好。您的职能部门正在为您开展工作:

SELECT u.id,
       isUserVerified(u.id) AS verification,
       hasUserPicture(u.id) AS profile_picture,
       userHobbies(u.id) AS hobbies 
FROM people.users u;
请注意,用户定义的函数往往会降低查询速度,有时会降低很多。函数在某些语言中可能是个好主意,但在SQL中,最好将逻辑表示为
JOIN
s和
groupby
s


此外,如果标识符没有“坏”字符,则没有理由使用反勾号。不必要的反勾号只会使查询更难写入和读取。

您希望输出是什么样子?你能添加一些功能吗。顺便说一句,视图在sql中有一个非常特殊的含义——您的代码是视图的一部分吗。