php – 正确的mySql命令获取元信息?
发布时间:2020-12-13 22:31:12 所属栏目:PHP教程 来源:网络整理
导读:WordPress是一个很好的Web应用程序示例,它使用表格来显示用户信息,然后是用户数据的元查找表.唯一的问题是,我知道获取用户列表的元信息的完整列表的唯一方法是“手动”构建sql语句 – 硬编码或借助 PHP. 用户表看起来像这样: wp_users表 ID|user_login|user
WordPress是一个很好的Web应用程序示例,它使用表格来显示用户信息,然后是用户数据的元查找表.唯一的问题是,我知道获取用户列表的元信息的完整列表的唯一方法是“手动”构建sql语句 – 硬编码或借助
PHP.
用户表看起来像这样: wp_users表 ID|user_login|user_email|user_pass|date_registered ================================================== 1| me |me@me1.com|f239j283r| 2011-01-01 wp_usermeta表 umeta_id|user_id|meta_key|meta_value ==================================== 1 | 1 | phone | 123-4567 1 | 1 | fname | john 1 | 1 | lname | doe 我知道我可以做这样的事情(手动或用PHP)来实现我想要的结果: select * from wp_users left join wp_usermeta as phone on (ID = user_id) AND (meta_key = phone) left join wp_usermeta as fname on (ID = user_id) AND (meta_key = fname) left join wp_usermeta as lname on (ID = user_id) AND (meta_key = lname) 产生这样的东西: ID|user_login|user_email|user_pass|date_registered|phone |fname|lname =================================================================+++=== 1| me |me@me1.com|f239j283r| 2011-01-01 |123-4567|john |doe 我知道mySql也有GROUP_CONCAT的东西,这就是为什么我觉得有更好的方法.这看起来像这样: select *,group_concat(meta_value) as all_meta from wp_users left join wp_usermeta on ID = user_id group by wp_users.ID 那么是否有一种方法可以获得与第一个sql语句类似的结果,并使用更像第二个的动态sql语句? 编辑 Doug提出了一个有趣的解决方案,可能使用了information_schema.我无法让它工作,所以我已经为任何想要测试SQL的人发布了两个表的转储:) http://pastebin.com/w0jkxnws 解决方法
这是你在找什么?它仍然是3个陈述,但是,与我之前的相反声明相反,应该没有太多的准备费用.
set group_concat_max_len = 2048; SELECT CONCAT('SELECT u.id,u.user_login,',GROUP_CONCAT(concat(' (SELECT meta_value FROM wp_usermeta WHERE user_id = u.id AND meta_key = "',um.meta_key,'") `','`') SEPARATOR ","),' FROM wp_users u ') FROM (SELECT DISTINCT meta_key FROM wp_usermeta) um INTO @sql; PREPARE stmt1 FROM @sql; EXECUTE stmt1; (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |