如果有父代ID,则获取最大ID,否则获取所有结果

用户名

我有一张桌子,有以下数据

CREATE TABLE IF NOT EXISTS `tbl_ticket` (
  `id` int(9) NOT NULL AUTO_INCREMENT,
  `parent_id` int(11) NOT NULL,
  `ticket_title` varchar(250) NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB  DEFAULT CHARSET=utf8 AUTO_INCREMENT=16 ;

--
-- Dumping data for table `tbl_ticket`
--

INSERT INTO `tbl_ticket` (`id`, `parent_id`, `ticket_title`) VALUES
(1, 0, 'tyty'),
(2, 0, 'testing'),
(3, 0, 'test from ticket'),
(4, 0, 'test ticket'),
(5, 0, 'test ticket'),
(6, 0, 'test ticket'),
(7, 0, 'test ticket'),
(8, 5, 'test ticket'),
(9, 0, '1 Ticket'),
(10, 0, '2Ticket'),
(11, 2, 'ticket2'),
(12, 2, 'ticket1'),
(13, 0, 'title 1234'),
(14, 0, 'titles 1234'),
(15, 14, 'sample 1234');

我需要返回表中父ID中不存在ID的所有行。另外,如果在parent_id列中存在id,我想获得具有与parent_id匹配的最高id的行。即我需要用返回行id 1, 3,4,6,7,8,9,10, 12,13, 15

我试过这个SQL

SELECT  `id` ,  `parent_id` 
FROM  `tbl_ticket` 
WHERE id NOT 
IN (

SELECT parent_id
FROM tbl_ticket
)  

但它也返回值11,而是应返回12ID为最高的行parent_id =2

帕拉

假设5预期输出中的是错字(如5parent_id字段中所示)id=8,则可以通过union两个简单查询的得出结果

select t1.id
  from tbl_ticket t1
    where not exists (
      select 1 from tbl_ticket
        where parent_id = t1.id
    )
    and parent_id = 0
union all
  select max(id)
    from tbl_ticket
    where parent_id <> 0
    group by parent_id
order by id asc

在这里摆弄

该查询分为两个部分。第一部分获得了所有票证,这些票证不在另一个票证的parent_id字段中,并且它们本身没有父票证(parent_id = 0)。

查询的第二部分查看那些具有父代(parent_id <> 0)的票证,并为每个共享同一票证的组parent_id选择具有maxID的票证

然后将结果与组合union以给出单个结果集。由于两个结果集是互斥的,因此我们可以使用union all跳过重复检查。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如果有`?`,则获取数组值

从实时数据中获取温度(如果有),否则平均历史数据

如果有空格,请获取字符后的所有字符串

查找所有其他记录的ID(如果有记录)

获取所有没有孩子的父母或者如果有孩子,获取最新的孩子

如何编写查询以获取特价(如果有)

如果有类,则使用jQuery获取类名

从xcopy获取通知(如果有文件复制)

反应获取数据并呈现错误(如果有)

如果有 3 个通道,则返回所有维度,否则返回 0

计数列(如果有特定ID)

Where子句,如果有多个相同的ID

如何申请如果有以下结果的条件?

汇总扫描-如果有大量线程,则结果错误

如果有多个记录,如何获取表中按钮的值

获取文件名(如果有一部分)-PHP

如果有元素,则获取元素的内联css(无内部或外部css)

获取最小连续值计数,如果有的话

如果有匹配项,则获取第一个值

如果有作者,标题,出版者等,则尝试获取字符串

获取所有文件的ID

如果有新信息就修改行,否则什么都没有

如果查询没有结果,如何返回消息但如果有则显示结果?

获取图像 src 如果有更多然后图像 src 只获取一张图像 src

打印所有文件名,如果有特定字符串,则在每个名称后附加1,否则附加0

如果有孩子,则从父母那里移除href,否则

如果有背景图像,则包含字体的 div 对齐,否则超出边界

如果有div存在,执行此操作,否则jquery无法正常运行

如果有足够的空间,如何使div居中对齐,否则右对齐