[英]mysql LEFT JOIN query with max value in where state
好的,所以我有一個數據庫和一個像這樣建立的查詢
http://sqlfiddle.com/#!2/c03e8/11
然而,我不能為我的世界弄清楚如何達到我的最終目標,即隱藏第十行,因為那個人有"tamed" = 1
有人請指出我正確的方向
簡單只需選擇您的選擇並添加其他位置
SELECT id, name, level, location, tamed
FROM (
-- your inside select here
) as temp
WHERE temp.tamed <> 1
使用以下查詢...第10行消失了。 從where子句中刪除條件並添加到連接條件。 另外,我讓你的第一個連接類型是INNER JOIN
而不是LEFT JOIN
。 因此,當條件不匹配時,該行將根本不返回。 你在http://sqlfiddle.com/#!2/835b3b/28點擊我的更新查詢
SELECT `t1` . * , MAX(
CASE WHEN `info_types`.`name` = "level"
THEN `t1_info`.`value`
ELSE NULL
END ) AS "level",
MAX(
CASE WHEN `info_types`.`name` = "location"
THEN `t1_info`.`value`
ELSE NULL
END ) AS "location",
MAX(
CASE WHEN `info_types`.`name` = "tamed"
THEN `t1_info`.`value`
ELSE NULL
END ) AS "tamed"
FROM `t1`
INNER JOIN `t1_info`
ON `t1`.`id` = `t1_info`.`t1_id`
AND `t1`.`id` !=10
LEFT JOIN `info_types`
ON `t1_info`.`type_id` = `info_types`.`id`
and `t1_info`.`value` !=1
GROUP BY `t1`.`id`;
編輯:
在您發布的小提琴查詢中,將第二個左連接更改為如下所示,第10行的tammed
列也將為NULL
。 否則,按照其他答案中的建議選擇外部選擇。
LEFT JOIN `info_types`
ON `t1_info`.`type_id` = `info_types`.`id`
AND `t1_info`.`type_id` != 3
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.