如何在SQL中使用“内部联接”和“排序依据”

时间:2018-08-08 09:29:52

标签: mysql sql

我想在php页面的查询中使用内部联接和顺序。
我的查询:

select 
    * 
from 
    table1 
inner join 
    table1category 
    on table1.table1category_id = table1category.id
order by updateDate desc;

'updateDate'用于表1 =>错误:order子句中的列'updateDate'不明确

9 个答案:

答案 0 :(得分:7)

order子句中的“ updateDate”列不明确

意味着您要使用的两个表中都存在updateDate。 如果要使用此字段进行订购,则必须指定要从哪个表订购。

例如:

SELECT
  *
FROM table1
INNER JOIN table1category
  ON table1.table1category_id = table1category.id
ORDER BY table1.updateDate DESC;

另外,请考虑在 SELECT JOINS 上使用*将从所有包含的表中获取所有列。

答案 1 :(得分:5)

当两个表中有相同的列时,您必须使用该列指定表名

SELECT
  *
FROM table1
INNER JOIN table1category
  ON table1.table1category_id = table1category.id
ORDER BY table1.updateDate DESC;

答案 2 :(得分:4)

这是因为updateDate同时存在于表table1和table1类别中

SELECT
  *
FROM table1 t
INNER JOIN table1category tc
  ON t.table1category_id = tc.id
ORDER BY t.updateDate DESC;

答案 3 :(得分:2)

您必须说出要用于此字段的表(在两个表中都存在):

select *
from table1
inner join table1category on table1.table1category_id = table1category.id
order by XXX.updateDate desc;

用table1或table1类别替换XXX。

您也可以在表上设置别名,例如:

select *
from table1 as myalias1
inner join table1category as myalias2 on table1.table1category_id = table1category.id
order by XXX.updateDate desc;

然后用myalias1或2替换XXX。

您可以对选择数据进行相同的操作(例如):

SELECT table1.id AS id, table2.id AS categoryId

答案 4 :(得分:2)

order子句中的列updateDate不明确

尝试一下

SELECT
  *
FROM table1 t1
INNER JOIN table1category t2
  ON t1.table1category_id = t2.id
ORDER BY t1.updateDate DESC;

答案 5 :(得分:2)

我发现使用别名通常会使连接更容易

SELECT
  *
FROM table1 AS alias1
INNER JOIN table1category AS alias2
  ON alias1.table1category_id = alias2.id
ORDER BY alias1.updateDate DESC;

答案 6 :(得分:1)

您缺少表名

SELECT
  *
FROM table1
INNER JOIN table1category
  ON table1.table1category_id = table1category.id
ORDER BY table1.updateDate DESC;

答案 7 :(得分:0)

SELECT *, table1.updateDate as "Table1 Update Date"
FROM table1 
INNER JOIN table1category ON table1.table1category_id = table1category.id
ORDER BY table1.updateDate DESC;

或者您可以在ORDER BY子句中保留别名

SELECT *, table1.updateDate as "Table1 Update Date"
FROM table1 
INNER JOIN table1category ON table1.table1category_id = table1category.id
ORDER BY "Table1 Update Date" DESC;

注意 始终以大写形式使用关键字 最好在SELECT CLAUSE中使用别名以更好地理解,否则会在 updateDate 中添加1,即 updateDate1 。 始终对相同的列名使用别名 不要使用所有列,即*,仅获取必需的列

答案 8 :(得分:0)

选择     * 从     表1 T 内部联接     表1类别C     在T.table1category_id = C.id 通过T.updateDate desc排序;