SELECT
order_num,
type_name ,
isParent
SELECT
t1.order_num,
t1.id,
t1.type_name,
( find_in_set( id, @ids ) > 0, @ids := concat( @ids, ',', parent_id ), '0' ) AS isParent
( SELECT order_num, id, type_name, parent_id FROM hw_baseinfo_project_type t WHERE del_flag = 0 ORDER BY order_num desc) t1,
( SELECT @ids := 'f555fe921b95ad59a35394c2d07173b7' ) t2
WHERE
isParent != '0'
自己动手试试吧。
当然,并不是只能传递一个值,多个值也是可以的啊
这样就会查询出多个子集的上级或者多个上级的子集集合啦。
-- 隐式查询 select 列名.... from 表1,表2 where 连表得条件。
-- 连表查询时,如果不使用连表条件则出现笛卡尔集。
-- 所谓笛卡尔集 就是A表中每一条记录关联B中中得每条记录
-- 1.查询每一个...
当我们进⾏语句查询的时候,总会遇到我们需要的条件需要通过另⼀个查询语句查询出来后才能进⾏,就是说A 查询语句需要依赖B 查询语句的查询结果,B 查询就是⼦查询,A 查询语句就是主查询,⼀个SQL语句可以包含多个⼦查询。
mysqlBUS_COMPANY表结构COMPANY_NO PARENT_ID-1 -20 -11 02 -13 24 ...
SELECT * FROM table_name WHERE Id=‘4’ --表的主键ID
UNION ALL
SELECT T0.* FROM TEMP,table_name T0 WHERE TEMP.Id=T0.ParentId --子级ID==父级ID
SELECT * FROM TEMP;
–根据指定节点ID获取所有父节点–
WITH TEMP AS
SELECT * FROM table_name WHERE Id=‘3
WITH RECURSIVE 则是一个递归的查询子句,他会把查询出来的结果再次代入到查询子句中继续查询。sql中WITH xxxx AS () 是对一个查询子句做别名,同时数据库会对该子句生成临时表;需要递归查询根据分类id为1查询出1-1,2-1的子分类和子子分类。查询结果如上:查询顺序从子到父。有一个分类表sort。......
SQL 中的 SELECT 命令不仅能够直接用来查询数据库中的数据,还能够嵌入到 WHERE 中作为子查询语句,或者将查询结果插入到另一个表中。
将子查询用于 WHERE 子句
子查询能够与 SELECT、INSERT、UPDATE 和 DELETE 语句一起使用。
下面以 SELECT 语句作为示例:
SELECT id, name
FROM table1
WHERE id in (
SELECT id
FROM table2);
在上面所给的例子中,我们将子查询的结果作为一个集合,使用 in 成员测试运算来筛选出同时存在于 table1 和 table2
(--下级父项
select materialshelf_id,materialshelf_pid,materialshelf_name from materialshelf where materialshelf_id = 5 --子级id
union all
--递归结果
1.子查询:出现在Where子句中的Select语句被称为子查询(subquery),子查询返回了一个集合,可以通过与这个集合比较来确定另一个查询集合。- 如果表达式的值至少与子查询的某一个值相比较满足θ关系,则“表达式 θ some (子查询)”的结果便为真;- 如果表达式的值与子查询的结果的所有值相比较都满足θ关系,则“表达式 θ all(子查询)”的结果便为真。2.三种类型的子查询:(NOT)IN-子查询;非相关子查询:内层查询独立进行,没有涉及任何外层查询相关信息的子查询。表达式 in (子查询)
DROP TABLE IF EXISTS `merchant_region`;
CREATE TABLE `merchant_region` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`parent_id` int(11) NULL DEFAULT NULL,
`name` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL,
PRIMAR