我有以下查询:
SELECT distinct a, b, c, d
FROM db.table
INNER JOIN db.table2
ON table.name=table2.name2
WHERE e <>'65';
查询选择a,b,c,d中不同的值。我实际需要的仅是a
。其余列b,c,d
我需要它们来提供有关a
的更多信息。我该怎么做呢。
知道表连接为1:N,其中列table2.name2
是table.name的外键引用。即table.name是唯一值,可以包含多于table2中的相应记录。
连接为1的两个表之间有什么区别:M表示外键,两个完全独立的表表示编写查询。
答案 0 :(得分:1)
为实现此目的,您需要在GROUP BY
中使用GROUP_CONCAT
SELECT
:
SELECT a,
GROUP_CONCAT(b) AS b,
GROUP_CONCAT(c) AS c,
GROUP_CONCAT(d) AS d
FROM db.table
INNER JOIN db.table2
ON table.name=table2.name2
WHERE e <>'65'
GROUP BY a;