sql-一个表,需要来自不同行/元组的多个值
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了sql-一个表,需要来自不同行/元组的多个值,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1310字,纯文字阅读大概需要2分钟。
内容图文
![sql-一个表,需要来自不同行/元组的多个值](/upload/InfoBanner/zyjiaocheng/886/f8cbc03a75de49ac8aa61ac53b0ddf85.jpg)
我有这样的表:
'profile_values'
userID | fid | value
-------+---------+-------
1 | 3 | joe@gmail.com
1 | 45 | 203-234-2345
3 | 3 | jane@gmail.com
1 | 45 | 123-456-7890
和:
'users'
userID | name
-------+-------
1 | joe
2 | jane
3 | jake
我想加入它们,并在其中包含两个值,例如:
'profile_values'
userID | name | email | phone
-------+-------+----------------+--------------
1 | joe | joe@gmail.com | 203-234-2345
2 | jane | jane@gmail.com | 123-456-7890
我已经解决了它,但是感觉很笨拙,我想知道是否有更好的方法可以做到.更具可读性或更快速(优化)或仅是最佳实践的含义解决方案.
当前解决方案:选择了多个表,许多条件语句:
SELECT u.userID AS memberid,
u.name AS first_name,
pv1.value AS fname,
pv2.value as lname
FROM users AS u,
profile_values AS pv1,
profile_values AS pv2,
WHERE u.userID = pv1.userID
AND pv1.fid = 3
AND u.userID = pv2.userID
AND pv2.fid = 45;
谢谢您的帮助!
解决方法:
这是一个典型的数据透视查询:
SELECT u.userid,
u.name,
MAX(CASE WHEN pv.fid = 3 THEN pv.value ELSE NULL END) AS email,
MAX(CASE WHEN pv.fid = 45 THEN pv.value ELSE NULL END) AS phone,
FROM USERS u
JOIN PROFILE_VALUES pv ON pv.userid = u.userid
GROUP BY u.userid, u.name
如果要查看PROFILE_VALUES表中没有任何条目的用户,请在“ JOIN”之前添加“ LEFT”.
内容总结
以上是互联网集市为您收集整理的sql-一个表,需要来自不同行/元组的多个值全部内容,希望文章能够帮你解决sql-一个表,需要来自不同行/元组的多个值所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。