努力获得正确的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但它仍然给我重复的位置。
任何帮助都会非常感谢
答案 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