sql - 如何在 SQL 中实现 "hasChildren"SELECT 语句?

标签 sql select

假设我有下表:

ID | parentID | MoreStuff
1  | -1       |  ...
2  |  1       |  ...
3  |  1       |  ...
4  |  2       |  ...
5  |  1       |  ...

如何生成 SQL SELECT 语句来确定特定行是否有子行?换句话说,我想知道 ID 1 是否有 child ,在这种情况下它有 3。

我不确定如何创建 SQL 语句:
SELECT ID, hasChildren FROM myTable;

上面 SQL SELECT 语句中的 hasChildren 将替换什么?

最佳答案

无组版:

SELECT MyTable.Id, CASE WHEN EXISTS 
    (SELECT TOP 1 1  --you can actually select anything you want here
     FROM MyTable MyTableCheck 
     WHERE MyTableCheck.ParentId = MyTable.Id
    ) THEN 1 ELSE 0 END AS HasRows
FROM MyTable

关于sql - 如何在 SQL 中实现 "hasChildren"SELECT 语句?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1805671/

相关文章:

MySQL : Make HAVING select also "null"

MySQL 从多个表中选择并创建一个新表

MySQL REGEXP 未能限制出现次数(?!)

mysql - 检索表中插入的每个 "parameter"的最后一行

php - MYSQL 选择查询返回不期望的结果

sql - 什么是长字符串的最佳 SQLite 数据类型

oracle - 选择最后 12 行 oracle

MySQL缺少约束索引

php - ODBC 驱动程序/FreeTDS

mysql - 事情在本地主机上工作,但没有服务器端出现错误 :Internal Error 500 with PHP and MySQL