表中现有id、name、parent三个字段,id和name唯一,parent字段可以重复,根据parent字段查询id和name字段
时间: 2023-02-06 14:02:17 浏览: 142
可以使用 SQL 语句来实现这个查询。
例如,假设你的表叫做 "table1",你可以使用如下的 SQL 语句来查询 id 和 name 字段:
```
SELECT id, name FROM table1 WHERE parent = 'your_parent_value';
```
其中,'your_parent_value' 是你要查询的 parent 字段的值。
如果你希望查询所有 parent 字段为空的行,可以使用如下的 SQL 语句:
```
SELECT id, name FROM table1 WHERE parent IS NULL;
```
如果你希望查询所有 parent 字段不为空的行,可以使用如下的 SQL 语句:
```
SELECT id, name FROM table1 WHERE parent IS NOT NULL;
```
希望这些信息能帮到你!
相关问题
在一个数据库中有id、name、parent_id三个字段,在springboot项目中,我需要从前端接收parent_id字段,并返回其对应的id和name字段,我该怎么写代码
在 Spring Boot 项目中,你可以使用以下步骤来实现这个功能:
1. 在数据库中执行查询语句,获取指定 parent_id 对应的 id 和 name 字段。例如,你可以使用以下 SQL 语句:
```
SELECT id, name FROM table WHERE parent_id = ?
```
2. 在你的 Spring Boot 项目中,创建一个数据访问对象(DAO)层来访问数据库。
3. 在 DAO 层中,编写方法来执行上述查询语句。该方法可以接收一个 parent_id 参数,并返回查询结果。
4. 在你的 Spring Boot 项目的控制器层(Controller)中,编写一个方法来处理前端发送的请求。该方法可以接收 parent_id 参数,并调用 DAO 层的方法来获取指定 parent_id 对应的 id 和 name 字段。最后,将结果返回给前端即可。
代码示例:
DAO 层:
```java
public interface MyDao {
List<Map<String, Object>> getIdAndNameByParentId(int parentId);
}
```
Controller 层:
```java
@RestController
public class MyController {
@Autowired
private MyDao myDao;
@GetMapping("/id-name")
public List<Map<String, Object>> getIdAndName(@RequestParam int parentId) {
return myDao.getIdAndNameByParentId(parentId);
}
}
```
MySQL5.7表:org包含字段:id code name parent_id 查询所有数据并查询数据的所有的父级ID,用/拼接成id_seq
在MySQL 5.7中,如果你想要查询`org`表的所有数据,并获取每个记录及其所有父级的`id`值,可以使用递归查询或者自连接(JOIN)。这里我们假设有一个辅助表`org_hierarchy`用于存储组织结构,其中包含`id`, `code`, `name`以及`parent_id`,并且`org.id = org_hierarchy.id`。
首先,创建一个辅助表`org_hierarchy`(如果不存在的话):
```sql
CREATE TABLE IF NOT EXISTS org_hierarchy (
id INT PRIMARY KEY,
code VARCHAR(255),
name VARCHAR(255),
parent_id INT,
hierarchy_path VARCHAR(255) DEFAULT ''
);
```
然后,使用递归查询(MySQL不直接支持无限递归,但你可以通过增加一个额外的层级数限制来达到目的):
```sql
DELIMITER //
CREATE PROCEDURE getAllParentsAndIds(IN org_id INT)
BEGIN
DECLARE done INT DEFAULT FALSE;
DECLARE cur CURSOR FOR SELECT * FROM org_hierarchy WHERE id = org_id OR parent_id = org_id;
DECLARE @current_row OrgHierarchy%ROW_TYPE;
OPEN cur;
REPEAT
FETCH cur INTO @current_row;
IF @current_row.parent_id IS NOT NULL THEN
SET @hierarchy_path = CONCAT(@hierarchy_path, '/', @current_row.id);
INSERT INTO org_hierarchy (id, code, name, parent_id, hierarchy_path)
VALUES (@current_row.id, @current_row.code, @current_row.name, @current_row.parent_id, @hierarchy_path);
END IF;
UNTIL done END REPEAT;
CLOSE cur;
END;;
DELIMITER ;
CALL getAllParentsAndIds(0); -- 从根节点开始查询
SELECT * FROM org_hierarchy WHERE hierarchy_path LIKE '%/%';
```
上面的SQL会创建一个存储过程,从指定的`id`开始(这里是0,即根节点),然后逐层向下查找所有父级的`id`。最后,查询返回的结果就是所有父级的`id`序列,它们用斜杠(`/`)分隔。
阅读全文
相关推荐
![-](https://img-home.csdnimg.cn/images/20241231044930.png)
![-](https://img-home.csdnimg.cn/images/20241231044930.png)
![-](https://img-home.csdnimg.cn/images/20241231044930.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)