在MySQL查询中删除整数最后一位的最好方法是什么?
我正在做一个家谱项目。假设father_id
为
10001
孩子们将是
100011
100012
100013
等。
我得到了father_ID
我需要得到他所有的孩子
我试着:
SELECT * FROM table WHERE Father_ID LIKE '$F_ID%'
但是没有成功。
我找到了这篇关于将整数转换成数组的文章,我认为这可能会有所帮助,但我不知道之后我会做什么。
提前感谢!
我不确定这是否是一个建立家谱的好方法。像你一样使用"父亲ID"
- 允许只跟踪一个父母-不适合任何严肃的祖先研究
- 使更改变得困难-如果进行了更正,您将不得不重新计算整个ID @stefgosselin提到的问题——有10个以上孩子的家庭怎么办?
我能看到的唯一好处是查询一个祖先的所有后代非常容易,但在我看来,仅此一点是不值得的。
我将使用正常的自动递增id,并给每个记录一个parent
列(或father
和mother
,当然,或者考虑到同性父母,parent1
和parent2
)。该列将包含父记录的ID。
那么你可以简单地执行像
这样的查询SELECT * FROM table WHERE father = `530`
查询祖先会变得有点困难,但其他事情会变得容易得多。
根据数据库的实际模式,您基本上有两个选项:
-
将Integer匹配为字符串。
SELECT * FROM table WHERE father_id LIKE '${f_id}%';
-
将Integer匹配为数值
SELECT * FROM table WHERE father_id >= $f_id * 10 AND father_id < ($f_id + 1) * 10;
你的SQL是错误的,正确的语法是
SELECT * FROM table WHERE Father_ID LIKE '$F_ID%'
我搞混了我的语言,所以请原谅我,如果这是无效的。试试以下命令:
floor(number / 10);