如何在MySQL中使用与众不同的命令?

时间:2019-03-06 05:00:13

标签: mysql sql

我有两个客户和交换台。我想通过运行左联接查询来获取客户端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 

错误:enter image description here

3 个答案:

答案 0 :(得分:1)

exchangevalidity_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,其中exchangeclient_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