Mysql 使用函数的SQL视图(phpMyadmin)
感谢您的帮助,我在我的数据库中创建了一个名为“人员”的视图,该视图使用三个函数从名为“用户”和“用户兴趣爱好”的两个表中检索数据,这三个函数分别称为“isUserVerified”、“hasUserPicture”和“UserHabiods”: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
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中有一个非常特殊的含义——您的代码是视图的一部分吗。