如何解决MySQL 在任何情况下都包含一列,即使它也是 JOIN 子句的一部分
这是我的查询,除了 Wordpress 前缀,这只是 MySQL 的问题。
滚动到 WHERE CLAUSE,找到所有选项。
基本上把所有结果都给我,$searchString
要么在 post_title 中,要么在名为“operations_long_bio”的 postmeta 字段中,或者“operations_short_bio"
这完全按预期工作,但我也希望在结果中包含元键值为“operations_short_bio”
的列的内容。SELECT
posts.post_title AS name,posts.ID as ID,postmeta.meta_value AS description
FROM `{$wpdb->base_prefix}posts` AS posts
LEFT JOIN `{$wpdb->base_prefix}postmeta` AS postmeta
ON posts.ID=postmeta.post_id
WHERE
posts.post_type = 'post'
AND
posts.post_status = 'publish'
AND
(
(
postmeta.meta_key
IN('operations_long_bio','operations_short_bio')
AND postmeta.meta_value LIKE '%$searchStr%'
)
OR ( posts.post_title LIKE '%$searchStr%' )
)
GROUP BY posts.ID
");
我尝试强制:
SELECT
posts.post_title AS name,postmeta.meta_value AS description
/***********/
CASE postmeta.meta_key='operations_short_bio' THEN postmeta.meta_value AS short_description END
...
但抛出错误。 真的不知道如何问“给我字段 postmeta.meta_value AS short_description 当它是 postmeta.meta_key='operations_short_bio' :(
有什么提示吗?
tyvm!!
解决方法
Syntax 的格式正确
CASE WHEN postmeta.meta_key='operations_short_bio' THEN postmeta.meta_value END AS short_description
这是您查询中的一个示例,我要稍微熟悉一下,因为这不是 php
CREATE TABLE posts (ID int,post_title varchar(100),post_type varchar(10),post_status varchar(10))
CREATE tABLE postmeta (post_id int,meta_key varchar(100),meta_value varchar(100))
SELECT CASE WHEN postmeta.meta_key='operations_short_bio' THEN postmeta.meta_value END AS short_description
FROM postmeta
| short_description | | :---------------- |
SELECT
posts.post_title AS name,posts.ID as ID,postmeta.meta_value AS description,MAX(CASE WHEN postmeta.meta_key='operations_short_bio' THEN postmeta.meta_value END) AS short_description
FROM `posts` AS posts
LEFT JOIN `postmeta` AS postmeta
ON posts.ID=postmeta.post_id
WHERE
posts.post_type = 'post'
AND
posts.post_status = 'publish'
AND
(
(
postmeta.meta_key
IN('operations_long_bio','operations_short_bio')
AND postmeta.meta_value LIKE '%$searchStr%'
)
OR ( posts.post_title LIKE '%$searchStr%' )
)
GROUP BY posts.ID,posts.post_title,postmeta.meta_value
name | ID | description | short_description :--- | -: | :---------- | :----------------
dbfiddle here
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。