我有两个客户和交换台。我想通过运行左联接查询来获取客户端ID。但是,当我运行查询时,它将引发错误。
select distinct
`clients`.`id` as `client_id`
from `clients`
left join `exchange`
on `clients`.`id` = `exchange`.`client_id`
where
`clients`.`iex_status` = 'Active'
order by
`exchange`.`validity_to` desc
答案 0 :(得分:1)
将exchange
。validity_to
添加到选择列中,否则将抛出此错误validity_to
不在SELECT列表中;这与DISTINCT不兼容
select distinct
clients.id as client_id,exchange.validity_to
from clients
left join exchange
on clients.id = exchange.client_id
where
clients.iex_status = Active
order by
exchange.validity_to desc
但是从您的屏幕截图来看,您似乎在distinct
之后使用了括号,这就是您得到错误的原因
答案 1 :(得分:0)
希望您做得好,我检查了您的查询,但发现2个差异。点数
1:“从clients
中选择id
作为client_id
的{{1}},并在clients
上向左exchange
加入clients
= {{ 1}}。id
,其中exchange
。client_id
='{'1'}的有效订单。clients
desc“
2:您在SQL中执行的查询中使用“(”,我认为您的第一个查询是正确的,它将为您提供正确的结果。
所以请不要在不同的字段中使用()。
谢谢
答案 2 :(得分:0)
根据所附图片,您可以将括号中的别名修改为-
select distinct
(`clients`.`id` as `client_id`) as 'client_id'
from `clients`
left join `exchange`
on `clients`.`id` = `exchange`.`client_id`
where
`clients`.`iex_status` = 'Active'
order by
`exchange`.`validity_to` desc