我正在尝试此查询
SELECT round( avg( DATEDIFF( CURRENT_DATE, age ) /365 ) , 1 )
FROM single_user U
INNER JOIN university_has_single_user T
ON T.single_user_users_id_user = U.users_id_user
where (
SELECT id_university
FROM university
WHERE university = "ISEL"
)
LIMIT 0 , 30
输出将是26.8,但是存在一些问题,因为如果我更改大学的名称或者只是删除where子句,结果再次为26.8。
日期是:
1979-06-23
1988-04-23
1988-04-23.
任何帮助?有什么问题?
答案 0 :(得分:1)
where (
SELECT id_university
FROM university
WHERE university = "ISEL"
)
应该是
where
exists (
SELECT id_university
FROM university x
WHERE x.university = "ISEL" AND
x.universityid = t.universityid
)
嗯,我想。我不清楚你的桌面结构是什么,以及你想要实现的目标,但在我看来,你想要获得给定大学的数字,将其名称传递给查询。
如果我错了,请张贴你的桌面结构和实际目标。
答案 1 :(得分:1)
您的WHERE
子句未过滤。这是WHERE 1=1
这两张表中的一张有一张FK回到大学,是吗?
我怀疑你正在寻找这个:
SELECT round( avg( DATEDIFF( CURRENT_DATE, age ) /365 ) , 1 )
FROM single_user U
INNER JOIN university_has_single_user T
ON T.single_user_users_id_user = U.users_id_user
INNER JOIN university AS UNI ON UNI.id =
U.university_id -- or wherever your university ID FK is.
where UNI. university = "ISEL"
LIMIT 0 , 30
答案将根据您的表格式而有所不同。