我不是很喜欢SQL而且我遇到以下问题:如果验证了特定条件,我必须从查询输出中排除特定记录。
我有这个查询可以返回0,1,> 1条记录:
SELECT
LS.id AS livestock_id,
LS.parent_livestock_species_id AS parent_livestock_species_id,
LS.livestock_species_name_en AS livestock_species_name_en,
IFNULL(LSN.livestock_species_name, LS.livestock_species_name_en) AS livestock_species_name,
LSN.description AS description,
LS.image_link AS image_link,
(
select count(*) from LivestockSpecies ls2 where ls2.id = 1 or ls2.parent_livestock_species_id = 1
) as total_number
FROM LivestockSpecies AS LS
LEFT JOIN LivestockSpeciesName AS LSN
ON LSN.livestock_species_id = LS.id AND LSN.language_id = 1
WHERE
LS.id = 1
OR
LS.parent_livestock_species_id = 1
total_number 字段计算总返回记录并显示在每一行中。
我希望如果此 total_number 字段包含值> 1且 parent_livestock_species_id 字段值为** null *则从查询输出中排除tis记录。
我可以使用SQL做这样的事情吗?
答案 0 :(得分:1)
在MySQL中,您可以添加having total_number = 1 or parent_livestock_species_id is not null
子句:
file_path_map = {path: data for data, path in file_paths_array}
这回答了您的具体问题。可能有更合适的方法来完成你真正想要完成的事情。
答案 1 :(得分:1)
添加SELECT
LS.id AS livestock_id
, LS.parent_livestock_species_id AS parent_livestock_species_id
, LS.livestock_species_name_en AS livestock_species_name_en
, IsNULL(LSN.livestock_species_name, LS.livestock_species_name_en) AS livestock_species_name
, LSN.description AS description
, LS.image_link AS image_link
, (
select
count(*)
from
LivestockSpecies ls2
where
ls2.id = 1
or ls2.parent_livestock_species_id = 1
)
as total_number
FROM
LivestockSpecies AS LS
LEFT JOIN
LivestockSpeciesName AS LSN
ON
LSN.livestock_species_id = LS.id
AND LSN.language_id = 1
WHERE
LS.id = 1
OR LS.parent_livestock_species_id = 1
GROUP BY
LS.id
, LS.parent_livestock_species_id
, LS.livestock_species_name_en
, IsNULL(LSN.livestock_species_name, LS.livestock_species_name_en)
, LSN.description
, LS.image_link
HAVING
(
select
count(*)
from
LivestockSpecies ls2
where
ls2.id = 1
or ls2.parent_livestock_species_id = 1
)
> 1
子句
@Override
protected void onDraw(Canvas canvas) {
...
bitmapUpdated = true;
}
答案 2 :(得分:0)
SELECT
LS.id AS livestock_id,
LS.parent_livestock_species_id AS parent_livestock_species_id,
LS.livestock_species_name_en AS livestock_species_name_en,
IFNULL(LSN.livestock_species_name, LS.livestock_species_name_en) AS livestock_species_name,
LSN.description AS description,
LS.image_link AS image_link,
ls2.total_number as total_number
FROM LivestockSpecies AS LS
INNER JOIN (
SELECT count(*) AS total_number
FROM LivestockSpecies ls2
WHERE ls2.id = 1 OR ls2.parent_livestock_species_id = 1
) ls2
ON 1=1 AND ls2.total_number>0
LEFT JOIN LivestockSpeciesName AS LSN
ON LSN.livestock_species_id = LS.id AND LSN.language_id = 1
WHERE
LS.id = 1