Php 如果表2上存在Id,则获取表1数据 表1 类别ID |类别名称 1洛雷姆1 2洛雷姆2 3月3日 表2 帖子ID |帖子内容|类别ID 1个职位12 2职位2 3职位3 1 4员额4 3 结果 类别: 洛雷姆1 洛雷姆2 洛雷姆3

Php 如果表2上存在Id,则获取表1数据 表1 类别ID |类别名称 1洛雷姆1 2洛雷姆2 3月3日 表2 帖子ID |帖子内容|类别ID 1个职位12 2职位2 3职位3 1 4员额4 3 结果 类别: 洛雷姆1 洛雷姆2 洛雷姆3,php,mysql,Php,Mysql,类别名称仅在该类别中有帖子时显示。 列表将使用li显示,使用具有不同caluse的内部联接: select distinct CategoryName as categories from table1 a inner join table2 b on a.categoryid=b.categoryid 解决方案 SELECT DISTINCT Table_1.Category_Name FROM Table_1 LEFT JOIN Table_2 ON Table_1.Cate

类别名称仅在该类别中有帖子时显示。
列表将使用li显示,使用具有不同caluse的内部联接:

   select distinct CategoryName as categories from table1 a inner join table2 b
    on a.categoryid=b.categoryid

解决方案

SELECT DISTINCT Table_1.Category_Name FROM Table_1 LEFT JOIN Table_2 ON Table_1.Category_ID = Table_2.Category_ID 
试试这个

SELECT DISTINCT table1.category_name
FROM table1
RIGHT JOIN table2 ON table1.category_id = table2.category_id;

您应该更改表/属性的名称,并选择您的宗教信仰,小写或大写,以及驼色或蛇形

而不要过多地讨论
DISTINCT
groupby
之间的差异,在这种情况下,我更倾向于使用
DISTINCT
,因为您没有使用聚合,而是在
SELECT
语句中投影一个特定的列(有关详细信息,请参阅本文:)

有几种方法可以解决这个问题。可以说,使用
internaljoin
是最具可读性的版本(如下所示),但是如果您的风格通常是运行大量子查询,那么子查询版本(如下所示)可能会更吸引您:

内部联接方法:

SELECT DISTINCT t1.category_name AS categories
FROM table_1 t1
  INNER JOIN table_2 t2 ON t1.category_id = t2.category_id
ORDER BY 1
SELECT t1.category_name AS categories
FROM table_1 t1
  WHERE category_id IN(
    SELECT DISTINCT category_id
    FROM table_2 t2
    )
ORDER BY 1
有关活动示例,请参见SQL Fiddle:

子查询方法:

SELECT DISTINCT t1.category_name AS categories
FROM table_1 t1
  INNER JOIN table_2 t2 ON t1.category_id = t2.category_id
ORDER BY 1
SELECT t1.category_name AS categories
FROM table_1 t1
  WHERE category_id IN(
    SELECT DISTINCT category_id
    FROM table_2 t2
    )
ORDER BY 1

请参阅SQL Fiddle以了解活动示例:

这不起作用,
表1
在MySQL中不是有效的表名,这只是一个示例。用户尚未写入原始表名。