php - 如何选择某些元键的所有元值?

标签 php mysql sql wordpress

我正在尝试进行查询,但我无法掌握它。我想通过某些 meta_keys 选择所有记录。当我通过一个元键查询时它工作正常。但是当我想通过两个 meta_key 进行查询时,它什么都不返回。有人可以帮帮我吗?!

有效的查询:

SELECT *
FROM `uszc_users` AS u, `uszc_utilizatori_acord` AS ua, `uszc_usermeta` AS ub
WHERE ua.email = u.user_email
AND ub.user_id = u.id
AND ub.meta_key = 'first_name'
AND acord = 'DA'
LIMIT 0 , 30

以及不返回任何内容的查询:

SELECT *
FROM `uszc_users` AS u, `uszc_utilizatori_acord` AS ua, `uszc_usermeta` AS ub
WHERE ua.email = u.user_email
AND ub.user_id = u.id
AND ub.meta_key = 'first_name'
AND ub.meta_key = 'last_name'
AND acord = 'DA'
LIMIT 0 , 30

我有 3 个表,表 uszc_usermeta 包含 first_name 和 last_name,它们都在 meta_value 列中。

最佳答案

你不能有任何记录

AND ub.meta_key = 'first_name'
AND ub.meta_key = 'last_name'

没有意义,就这么简单:

SELECT *
FROM `uszc_users` AS u, `uszc_utilizatori_acord` AS ua, `uszc_usermeta` AS ub
WHERE ua.email = u.user_email
AND ub.user_id = u.id
AND (ub.meta_key = 'first_name'
OR ub.meta_key = 'last_name')
AND acord = 'DA'
LIMIT 0 , 30

更新 由于 OP 说 @bhelmet 发布了正确的答案,我想为 OP 澄清查询应该如何看起来像恕我直言:

SELECT u.*, ub.meta_value first_name, uc.meta_value last_name
FROM `uszc_users` AS u  
INNER JOIN `uszc_utilizatori_acord` AS ua
ON ua.email = u.user_email
  AND ua.acord = 'DA'
INNER JOIN  `uszc_usermeta` AS ub
ON ub.user_id = u.id
  AND ub.meta_key = 'first_name'
INNER JOIN `uszc_usermeta` AS uc
ON uc.user_id = u.id
  AND uc.meta_key = 'last_name'
LIMIT 0 , 30

关于php - 如何选择某些元键的所有元值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33479959/

相关文章:

mysql - 不确定发生了什么的繁重查询

php - 如何在 Laravel ORM Eloquent 上转换原始 sql 命令

php - 如何使用 PHP 将长字符串插入 mySQL 数据库?

php - 如何创建功能搜索框来查询某个表中的数据?

php - 无法从套接字读取(挂起)

php - 将所有评论分配给 SQL 中的一篇文章

mysql - 在关系数据库中访问结果时出错

mysql - 需要 SQL 语句帮助

sql - 如何使用 Sql 获取两个日期之间的最小金额?

php - 如何在php中将十六进制转换为字符串或文本