需要正确格式化此MYSQL查询

时间:2011-07-28 09:18:37

标签: mysql

努力获得正确的MYSQL查询以执行以下操作:

2张桌子(地点和场地)。 在位置我想获取唯一的location_name和location_id其中有一个on_website = 1的场所 这是绘制导航的下拉列表。

所以我有伦敦作为一个位置,在伦敦我有几个场地 在Wilmslow,我有一个位置,但没有我想宣传的场地(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但它仍然给我重复的位置。

任何帮助都会非常感谢

3 个答案:

答案 0 :(得分:4)

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

您必须在没有venue_id的情况下使用distinct,因为对于查询中的不同行,venue_id是不同的。 Distinct仅过滤完全匹配的行。

答案 1 :(得分:1)

如果您列出了所有三个选定列,则会看到每个列都是唯一的。这就是DISTINCT的工作原理。只是不要选择你不需要的字段。

答案 2 :(得分:0)

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