0
你好我有2個表中的mysql表中的帖子和表post_meta 我想根據post_meta鍵/值數據查詢帖子表。 示例中的第一個查詢= statment正在工作,第二個查詢的!= statment不起作用。任何幫助?SQL元相關查詢
如何用postmeta鍵排除帖子[hide] = value ['1']?
這裏的期望結果
例如
//顯示交其中postmeta鍵[隱藏] =值1
SELECT
*
FROM
post AS mt0
INNER JOIN post_meta AS mt1 ON mt0.id = mt1.postid
WHERE
(
mt1.`key` = 'hide'
AND CAST(mt1.`value` AS CHAR) = 1
)
2行
1後試驗1個3 1 1個隱藏
3後測試3 4 3隱藏1個
//顯示交其中postmeta鍵[隱藏]!=值1
SELECT
*
FROM
post AS mt0
INNER JOIN post_meta AS mt1 ON mt0.id = mt1.postid
WHERE
(
mt1.`key` = 'hide'
AND CAST(mt1.`value` AS CHAR) != 1
)
0行
//爲什麼呢?這個查詢必須返回後2
DB模式
----table post
CREATE TABLE `post` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`title` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=MyISAM AUTO_INCREMENT=4 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;
INSERT INTO `post` VALUES ('1', 'Post test 1');
INSERT INTO `post` VALUES ('2', 'Post test 2');
INSERT INTO `post` VALUES ('3', 'Post test 3');
----table post_meta
CREATE TABLE `post_meta` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`postid` int(11) DEFAULT NULL,
`key` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL,
`value` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=MyISAM AUTO_INCREMENT=5 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;
INSERT INTO `post_meta` VALUES ('1', '1', 'name', 'leone');
INSERT INTO `post_meta` VALUES ('2', '2', 'name', 'mario');
INSERT INTO `post_meta` VALUES ('3', '1', 'hide', '1');
INSERT INTO `post_meta` VALUES ('4', '3', 'hide', '1');
感謝Abhik的答案。如何用postmeta hide = 1排除帖子? – nikmauro
歡迎您!我不知道你能否在問題中加上你期待的結果。這對我來說更容易想象它。 –
@nikmauro你在看這個嗎? http://sqlfiddle.com/#!2/372cb/10 –