0

我有一张桌子:

InvoiceItem
----------------
id     
type      <- 'ITEM' 'FEE' 'OTHER'
parentid  <- InvoiceItem id of the parent invoice item
<some other columns>

我如何将这个表连接到自身,如果表中有任何项目具有给定的 InvoiceItem id 作为 parentid,则获取所有 InvoiceItem 列,其中 id = 给定的 id 加上一个给我一个 true|false 1|0 的项目。

4

1 回答 1

2
  1. 使用相关子查询:

    SELECT a.*,
           EXISTS(SELECT * FROM InvoiceItem b WHERE b.parentid = a.id)
             AS has_children
    FROM   InvoiceItem a
    WHERE  a.id = ?
    
  2. 使用外连接:

    SELECT a.*, COUNT(b.id) > 0 AS has_children
    FROM   InvoiceItem a LEFT JOIN InvoiceItem b ON b.parentid = a.id
    WHERE  a.id = ?
    
于 2013-01-03T15:39:30.877 回答