2014-01-09 30 views
-2

我没有得到结果,当我运行这个,但我绝对有符合标准的行。思考?查询没有返回结果,虽然有效

SELECT * FROM `elements` WHERE `child_id` IS NULL AND `parent_id`='128102' 

我希望它返回行,其中child_id IS NULL和parent_id等于128102,但事实并非如此。

+0

如果'parent_id'是一个整数,则删除单引号。否则,没有理由你的查询不应该工作。你做错了什么。 – Kermit

+0

删除单引号不起作用。 –

+0

Try&TRIM('parent_id')='128102' – Mihai

回答

1

总结上述所有我的意见:

由于您的列child_id是文本字段它不能NULL,所以你需要将其更改为以下:

SELECT * FROM `elements` WHERE `child_id` = '' AND `parent_id`='128102' 

但正如我还说你真的应该使用varchar或更好的int您的ID字段。 Text字段始终将值存储在Blob(文件)中,而不是在表中内联。它实际上不应该用于小数据集,现在甚至认为大量文本的性能很差。

+0

大量数据被认为是“好”性能?我可能使用varchar,但不是int,因为ID将是字母数字。 –

+1

基本上'TEXT'已被弃用,不需要使用,因为可以使用'VARCHAR(MAX)'代替。除非你的ID将超过64K字符(这将是疯狂的),没有理由永远使用'TEXT',因为'TEXT'列不能被索引并且需要读取整行。你可以在这里找到更多的性能指标:http://forums.mysql.com/read.php?24,105964,105964#msg-105964 – jzworkman

0

尝试

SELECT * FROM `elements` WHERE `child_id` IS NULL AND trim(`parent_id`)='128102'; 

,如果它不能正常工作尝试以下

SELECT * FROM `elements` WHERE `child_id` IS NULL AND `parent_id`=128102; 

如果上述两种查询不工作,请告诉我的两个child_idparent_id

该数据类型还提供以下查询结果

SELECT child_id,length(child_id),parent_id,length(parent_id) 
FROM `elements` WHERE `parent_id` like '%128102%' 
+0

如果您阅读上面的评论,这已经提出并且没有奏效。 – jzworkman

+0

@jzworkman - 回答编辑 –