我有这样的查询:
$sql_place = "SELECT * FROM place
INNER JOIN join_appointment_place
ON join_appointment_place.id_place = place.id_place
INNER JOIN join_event_appointment
ON join_appointment_place.id_appointment = join_event_appointment.id_appointment
WHERE join_event_appointment.id_event = " . $EVENT_ID . "
ORDER BY place.title, place.category";
问题是我需要返回所有不同titles
的地方。所以我应该使用DISTINCT
。但是,如何选择DISTINCT
title
并同时返回所有其他值?
$sql_place = "SELECT
DISTINCT
place.id_place,
place.avatar,
place.category,
place.title,
place.description,
place.address,
place.latitude,
place.longitude,
place.email,
place.web,
place.shared FROM place
INNER JOIN join_appointment_place
ON join_appointment_place.id_place = place.id_place
INNER JOIN join_event_appointment
ON join_appointment_place.id_appointment = join_event_appointment.id_appointment
WHERE join_event_appointment.id_event = " . $EVENT_ID . "
ORDER BY place.title, place.category";
以上就是我的尝试。但我担心的是,不仅将DISTINCT应用于title
,而且应用于每个选定的列,这不是我要寻找的。
感谢您的帮助:))
答案 0 :(得分:1)
如果你想获得这些头衔,请尝试使用GROUP BY place.title。
答案 1 :(得分:0)
是的,它会在每一列都返回一个独特的但这并不是坏事。例如,像这样的独特查询可以返回:
Col1 Col2 Col3 Col4
1 ABC XYZ Y
1 ABC XYZ N
虽然你的问题听起来好像你希望它只为每一列检索不同的值。
答案 2 :(得分:0)
正确的查询是使用GROUP BY
不管怎样,谢谢。
$sql_place = "SELECT * FROM place
INNER JOIN join_appointment_place ON join_appointment_place.id_place = place.id_place
INNER JOIN join_event_appointment ON join_appointment_place.id_appointment = join_event_appointment.id_appointment
WHERE join_event_appointment.id_event = " . $EVENT_ID . "
GROUP BY place.title ORDER BY place.title, place.category";
答案 3 :(得分:-1)
如果您担心,可以使用嵌套查询。
选择不同的标题并使用外部查询的where子句中的结果。
e.g。
SELECT * FROM Customers
WHERE title IN (SELECT DISTINCT title FROM titles WHERE title > 'X');