子句在哪里不明确

68bkxrlz  于 2021-06-17  发布在  Mysql
关注(0)|答案(2)|浏览(248)

使用dallasfood;

select estab_id 
from estab as EST    
left join inspect as INSP
       on EST.estab_id = INSP.estab_id    
where inspdate = '8-3-17'
  and estab_id = '2473'

正在尝试查找如何修复estab\u id的子句不明确结果。我正在尝试查找某个机构在某个日期返回的冲突,但无法找出其不明确的原因

m0rkklqb

m0rkklqb1#

在选择中使用表名,如 estab_id 两个表中的列,这就是为什么它在查询中显示不明确的原因

select EST.estab_id 
from estab as EST    
left join inspect as INSP
on EST.estab_id = INSP.estab_id    
where inspdate = '8-3-17'
and EST.estab_id = '2473'
mwyxok5s

mwyxok5s2#

您应该限定查询中的所有列,特别是当有多个表时。
最好的别名通常是最短的——表名的缩写。另外,您应该使用标准的日期格式,假设您的日期存储为日期。
比如说:

select e.estab_id 
from estab e left join 
     inspect i
     on e.estab_id = i.estab_id and i.inspdate = '2017-08-03'
where e.estab_id = 2473;

其他注意事项:
我去掉了单引号 2473 . 如果 estab_id 确实是一个字符串,则包含单引号。如果它是一个数字,那么这是一个坏主意,因为您正在混合数据类型。
我想 inspdate 来自 inspect ,因此符合 i .
表中第二个表的条件 left join 一般都是在 on 条款。否则,连接将变为内部连接。

相关问题