gpt4 book ai didi

mysql - SQL - 带有优先级过滤器的 SELECT 查询

转载 作者:行者123 更新时间:2023-11-30 23:28:22 25 4
gpt4 key购买 nike

我有一个多表查询,看起来像这样:

SELECT tree.name, tree.type, branch.name, branch.type, leaf.name, leaf.type 
FROM tree, branch, leaf
WHERE leaf.branch_id = branch.id
AND branch.tree_id = tree.id
ORDER by field(tree.type, 'Poplar', 'Birch', 'Hazelnut')

所以这给了我属于三个树条目中任何一个的所有叶条目。

现在,我真的只想按指定的顺序返回属于一棵树的叶条目。

因此,如果有属于白杨树的叶子条目,则只显示这些。但是,如果没有 Poplar 叶子条目,则只显示属于 Birch 树的叶子条目。

可以有任意数量的叶子条目。我只想要出现在我的优先列表中的树上的那些。理想情况下只使用一个查询。

有什么想法吗?提前致谢....

最佳答案

试试这个:

SELECT * FROM
(
SELECT tree.name, tree.type, branch.name, branch.type, leaf.name, leaf.type,
IF(@var_type = '' OR a.type = @var_type, a.type := @var_type, 0) AS check_flag
FROM tree, branch, leaf, (SELECT @var_type := '')
WHERE leaf.branch_id = branch.id
AND branch.tree_id = tree.id
ORDER by field(tree.type, 'Poplar', 'Birch', 'Hazelnut')
) a
WHERE check_flag <> 0;

关于mysql - SQL - 带有优先级过滤器的 SELECT 查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11985300/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com