【问题标题】:Proper formatting for this MYSQL query required此 MYSQL 查询需要正确的格式
【发布时间】:2011-07-28 09:18:37
【问题描述】:

努力组装正确的 MYSQL 查询以执行以下操作:

2 张桌子(位置和场地)。 在 Locations 我想获得唯一的 location_name 和 location_id 哪里有 on_website = 1 的场地 这是为导航绘制一个下拉列表。

所以我有伦敦作为一个地点,在伦敦我有几个场馆 在威姆斯洛,我有一个位置,但没有我想宣传的场所(on_website = 0)

目前我得到了输出

Bath
London
Birmingham
London
Bristol
London

我想要的地方

Bath
London
Birmingham

试过这个:

SELECT 
  tblLocations.location_name,
  tblLocations.location_id,
  tblVenues.venue_id
FROM
  tblLocations
  INNER JOIN tblVenues ON (tblLocations.location_id = tblVenues.location_id)
  Where tblVenues.on_website = 1

并尝试使用 distinct,但它仍然给我重复的位置。

任何帮助都会非常感谢

【问题讨论】:

    标签: mysql


    【解决方案1】:
    SELECT DISTINCT
      tblLocations.location_name,
      tblLocations.location_id
    FROM
      tblLocations
      INNER JOIN tblVenues ON (tblLocations.location_id = tblVenues.location_id)
      Where tblVenues.on_website = 1
    

    您必须使用 distinct 而没有场地 ID,因为场地 ID 对于查询中的不同行是不同的。 Distinct 仅过滤完全匹配的行。

    【讨论】:

      【解决方案2】:

      如果您列出了所有三个选定的列,您会发现它们中的每一列都是独一无二的。这就是DISTINCT 的工作原理。只是不要选择您不需要的字段。

      【讨论】:

        【解决方案3】:

        GROUP BY 可以解决问题

        SELECT 
          tblLocations.location_name,
          tblLocations.location_id,
          tblVenues.venue_id
        FROM
          tblLocations
          INNER JOIN tblVenues ON (tblLocations.location_id = tblVenues.location_id)
          Where tblVenues.on_website = 1
          GROUP BY tblLocations.location_id
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2015-06-23
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多