如何在mysql中选择id不存在为其他人的父级的值?

时间:2011-07-29 07:36:50

标签: mysql

两个问题:

  1. 我的表格有三个字段:idparent_idname。最初id0,对于作为当前元素的子元素的元素, parent_id设置为当前元素的id ....基本上, 无限的嵌套概念。现在我需要找到那些有用的元素 没有任何孩子或子元素。有什么想法吗?
  2. 检索a的id(auto_increment)的最佳选择是什么? 记录我刚插入? mysql_insert_id或last_insert_id,或 别的什么?我需要同时插入两个记录并使用 来自第一个记录的id(主键)作为第二个的外键 记录。

4 个答案:

答案 0 :(得分:0)

1)不确定我理解您的架构以及parent_id如何工作......

SELECT
  t1.id
FROM
  table t1
LEFT OUTER JOIN
  table t2
ON
  t1.id = t2.parent_id
WHERE
  t2.parent_id IS NULL

2)LAST_INSERT_ID()是返回连接上生成的最后一个自动增量的函数。我不知道PHP中mysql_insert_id指的是什么?mysql_last_insert_id?这是一个包含对LAST_INSERT_ID()的调用的PHP函数。

答案 1 :(得分:0)

  1. 使用自我加入
  2. SELECT f.is,f.parent_id,f.name FROM table f
    LEFT JOIN table s ON s.id = f.parent_id
    WHERE s.parent_id = 0
    
    1. 使用last_insert_id

答案 2 :(得分:0)

select LAST_INSERT_ID(field) from table limit 1;

你应该在这里找到答案: Most efficient way to get table row count

答案 3 :(得分:-1)

我通过使用:

解决了它
SELECT * FROM `nestmenu` WHERE `id` NOT IN (SELECT `parent_id` AS `id` FROM `nestmenu`)

但是,正如您所知,此查询根本没有优化,但它确实完成了工作。任何想法如何优化它?