我有两张桌子
Profile Status
profile_id |name | active status_id |profile_id|age
我需要获取配置文件“active”为1且状态年龄大于10
的状态此查询在profile_id匹配时返回
Select * from
status LEFT JOIN ON status.profile_id = profile.profile_id
但是当我放置where条件时它什么也没显示
Select * from
status LEFT JOIN ON status.profile_id = profile.profile_id
where profile.active= 1 and status.age > 40
左边是否加入了正确的JOIN类型?
答案 0 :(得分:1)
您错过了加入表名称,profile.enabled
应该是profile.active
试试这个:
Select *
from
status
LEFT JOIN profile ON status.profile_id = profile.profile_id
where
profile.active = 1 and status.age > 40
OR
Select *
from
status
LEFT JOIN profile ON status.profile_id = profile.profile_id and status.age > 40
where
profile.active = 1
答案 1 :(得分:0)
将profile.enabled
更正为profile.active
,并且LEFT JOIN上的table name
也会丢失。试试这个
SELECT *
FROM status
INNER JOIN profile ON status.profile_id = profile.profile_id
WHERE profile.active = 1
AND status.age > 40
答案 2 :(得分:0)
试试这个。
SELECT *
FROM Profile p,
Status s
WHERE p.profile_id=s.profile_id
AND p.active=1
AND s.age>10
另外请交叉检查您的第二个查询,它已启用字段,但在配置文件中不存在。
答案 3 :(得分:0)
它似乎错过了左连接子句中的表名。 在你的帖子中,你要求年龄大于10岁,并且在sql命令中它是40岁。
更改
Select * from
status LEFT JOIN ON status.profile_id = profile.profile_id
where profile.enabled = 1 and status.age > 40
到
Select * from status LEFT JOIN profile ON status.profile_id =
profile.profile_id where profile.active= 1 and status.age > 40
答案 4 :(得分:0)
如果错过了第二张桌子的表名。
您的查询应该是这样的:
SELECT s.* FROM
status s LEFT JOIN profile p ON s.profile_id = p.profile_id
WHERE p.active= 1 and s.age > 40
答案 5 :(得分:0)
缺少'个人资料' LEFT JOIN
SELECT * FROM
status LEFT JOIN profile
ON status.profile_id = profile.profile_id
AND profile.active= 1 AND status.age > 40