【问题标题】:MySQL SELECT Statment issueMySQL SELECT 语句问题
【发布时间】:2023-04-11 06:08:02
【问题描述】:

我有以下查询,它返回 2 个元组

SELECT bar_id, bar_name, town_name, bar_telephone, subscription_type_id, pic_type
FROM towns, subscriptiontype, regions, bar
LEFT JOIN barpictures bp ON bar.bar_id = bp.bar_id_fk
WHERE town_id = town_id_fk
AND bar.test_field = 0
AND subscription_type_id = subscription_type_id_fk
AND region_id = region_id_fk
AND (type like 'logo%' OR type IS NULL) 

元组之间的主要区别在于一个元组的'type' = logo,而另一个元组的'type' = logo_large。我需要的不是两个元组,而是两个类型属性,一个包含“logo”,另一个包含“logo_large”

例如

bar_id, bar_name, town_name, bar_telephone, subscription_type_id, pic_type1, pic_type2

这可能吗?

【问题讨论】:

  • 混合 ANSI-89 和 92 连接语法,该查询不应该通过语法检查...

标签: mysql select join left-join


【解决方案1】:

是的,有可能:

SELECT ..., subscription_type_id,
    MAX(IF(type='logo',type,NULL)) as pic_type1,
    MAX(IF(type='logo_large',type,NULL)) as pic_type2
...
GROUP BY bar_id;

这个想法是使用聚合函数来合并行并仅选择与您的条件匹配的值(对于不匹配的行,聚合函数应返回 null)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-05-11
    • 1970-01-01
    • 1970-01-01
    • 2012-08-13
    • 2010-12-15
    • 2012-08-05
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多