SQL查询:使用where子句连接两个表

时间:2012-03-01 14:26:26

标签: sql sql-server

我的SQL查询有问题。我得到以下查询工作,这非常基本:

SELECT *
FROM table1
WHERE Date = CURDATE()

table1中有一列名为h_idtable2列中的列h_idname

我想加入这两个表,以便我从当前日期获得表2中的名称。

我尝试了这个,但它似乎无法正常工作

SELECT t2.name, t1.field2
FROM table1 t1
INNER JOIN table2 t2 ON t1.H_ID = t2.H_ID
WHERE t1.Date = CURDATE( )

4 个答案:

答案 0 :(得分:7)

可能区分大小写。

table1有field2列吗?

如果不是/那么,根据你的问题,试试这样:

SELECT t2.name
FROM table1 t1
INNER JOIN table2 t2 ON t1.h_id = t2.h_id
WHERE t1.Date = CURDATE()

另一种可能性是where子句,试试这样:

SELECT t2.name
FROM table1 t1
INNER JOIN table2 t2 ON t1.h_id = t2.h_id
WHERE convert(varchar, t1.Date, 112) = convert(varchar, getdate(), 112)

最后一种可能性是没有任何h_id与table1和table2相等。

答案 1 :(得分:2)

尝试删除WHERE t1.Date = CURDATE( )并查看您的记录是否已返回。 如果是,您的CURDATE( )存在问题,请尝试使用getdate()或尝试格式化日期

答案 2 :(得分:2)

SQL Server不支持curdate()。这是针对MySQL的。

适当的功能是getdate()

以下是官方documentation

的链接

修改

正如您在评论中所说,如果getdate()不起作用,那么您正在使用MySQL。试试这个:

SELECT t2.name, t1.field2
FROM table1 t1
INNER JOIN table2 t2 ON t1.H_ID = t2.H_ID
WHERE date(t1.Date) = date(CURDATE())

答案 3 :(得分:0)

尝试:

SELECT t2.name, t1.field2
FROM table1 t1
LEFT JOIN table2 t2 ON t1.H_ID = t2.H_ID
WHERE t1.[Date] = GETDATE( )

或者(MySQL):

SELECT t2.name, t1.field2
FROM table1 t1
LEFT JOIN table2 t2 ON t1.H_ID = t2.H_ID
WHERE t1.`Date` = CURDATE( )