Mysql 如何为2个表订购左联接
我(经过荒谬的反思)将我们的“赌客”存储在两个表中,这取决于他们是通过快速结账表注册还是付款 我的SQL如下所示:Mysql 如何为2个表订购左联接,mysql,sorting,Mysql,Sorting,我(经过荒谬的反思)将我们的“赌客”存储在两个表中,这取决于他们是通过快速结账表注册还是付款 我的SQL如下所示: SELECT DISTINCT(sale_id), sale_punter_type, sale_comment, sale_refund, sale_timestamp, punter_surname, punter_firstname, punter_checkout_surname, punter_checkout_firstname,
SELECT
DISTINCT(sale_id), sale_punter_type, sale_comment, sale_refund, sale_timestamp,
punter_surname, punter_firstname,
punter_checkout_surname, punter_checkout_firstname,
punter_compo_surname, punter_compo_firstname,
sale_random, sale_scanned, sale_id
FROM
sale
LEFT JOIN
punter ON punter_id = sale_punter_no
LEFT JOIN
punter_checkout ON punter_checkout_id = sale_punter_no
LEFT JOIN
punter_compo ON punter_compo_id = sale_punter_no
WHERE
sale_event_no = :id
ORDER BY
punter_surname, punter_firstname,
punter_checkout_surname, punter_checkout_firstname
它返回结果,但首先按字母顺序列出注册用户,然后按字母顺序列出结帐赌徒
我的问题是,有一种方法可以让所有用户(注册或签出)按字母顺序排列在1个排序列表中,而不是2个相连的排序列表中
我想也许我可以用类似“赌客”的姓氏作为“赌客”的姓氏,但那没用
有什么想法吗?我现在知道我不应该使用两张单独的桌子,但我现在坚持使用它
谢谢。我想您只想使用
coalesce()
ORDER BY COALESCE(punter_surname, punter_checkout_surname)
COALESCE(punter_firstname, punter_checkout_firstname)
其他意见:
- 我怀疑是否有必要使用
。为什么这会为一个DISTINCT
生成多行sale\u id
- 当查询有多个表时,请限定所有列名(即,包括表别名,以便您和其他人知道表的来源)
- 您的数据有三组名称。这似乎太过分了
- 您可能希望将
放在COALESCE()
中,这样查询生成的名称就不会太多SELECT
- 以下是我的答案:
ORDER BY
COALESCE( UCASE( punter_surname) , UCASE( punter_checkout_surname ), UCASE( punter_compo_surname ) ) ,
COALESCE( UCASE( punter_firstname ) , UCASE( punter_checkout_firstname ), UCASE( punter_compo_firstname) )
为什么在
saleid
周围有括号?您是否将选择DISTINCT
与某个带有参数的函数混淆?请注意,DISTINCT适用于列列表中紧跟其后的所有列;因此,在这种情况下,您将获得sale\u id
,sale\u punter\u type
,sale\u comment
,sale\u return
,sale\u timestamp
,punter\u firstname
,punter\u checkout\u firstname
,punter\u checkout\u firstname>,punter\u compo\u姓氏
,punter\u compo\u名字
,sale\u随机
,sale\u扫描
,以及sale\u id
。这可能不是你想的。谢谢你,鲍勃,这很有道理——我不知道!我已经删除了,你是对的,这是没有必要的。COALESCE不起作用,它返回的记录比我预期的要少。我读过关于COALESCE的文章,但仍然不太理解它&当然不理解它如何帮助我解决这个问题。起初我以为它会连接我的结果,但似乎没有。对不起,我怀疑你。它确实起作用了,但我必须做一些调整才能让它正常工作。