我为一个应该返回满足两个条件的记录的查询创建了下面的代码:
ID等于#7
疾病等于单引号之间的疾病之一。
应用此查询的数据库中ID =7的记录不存在查询中列出的作为属性"disease“的值的任何疾病,因此查询不应因此返回任何记录。然而,作为查询的结果,它返回ID =7的元组。你能告诉我我的代码有什么问题吗?我试着用(OR)这个词来代替(X),但是我仍然得到相同的结果。
SELECT *
FROM patients
WHERE disease = ( 'migraine' || 'stroke' || 'concussion' || 'down_syndrome' || 'epilepsy' || 'autism' || 'hydrocephalus' || 'dyslexia' || 'dystonia' || 'aphasia' || 'coma' || 'aneurysm' || 'batten_disease' || 'brain_cancer' || 'alzheimers_disease' || 'amyolrophic_alteral_sclerosis' )
AND ID = '7'
发布于 2016-04-19 17:23:03
您的意思是使用IN
运算符,如
SELECT *
FROM patients
WHERE disease IN ( 'migraine', 'stroke' , 'concussion' , 'down_syndrome' , 'epilepsy' , 'autism' , 'hydrocephalus' , 'dyslexia' ,'dystonia' , 'aphasia' , 'coma' ,'aneurysm' , 'batten_disease' , 'brain_cancer' , 'alzheimers_disease' , 'amyolrophic_alteral_sclerosis' )
AND ID = '7';
编辑:每个注释的:||
是一个级联操作符,而不是OR
条件,因此最终您将得到一个字符串,它与所有疾病连接在一起,并且您正在尝试进行比较。
https://stackoverflow.com/questions/36725268
复制相似问题