簡體   English   中英

mysql LEFT JOIN查詢,其中max為最大值

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM