我正在将数据存储在用户个人资料中
var Mark = {
firstName: 'Mark',
lastName: 'Wielstra',
mass: 78,
height: 1.69,
calculateBMI: function() {
this.bmi = this.mass / (this.height * this.height);
return this.bmi;
}
}
从上面的示例中可以看到,我正在水平存储数据。
因此,用户ID 1,2和4具有网站。但是,用户ID 3没有网站。
现在,当我编写查询时。说,表名是foo
userid | field_title | field_value
1 | fname | JD1
1 | lname | JD1
1 | website | www.JD
2 | fname | JD2
2 | lname | JD2
2 | website | www.JD2
3 | fname | JD3
3 | lname | JD3
4 | fname | JD4
4 | lname | JD4
4 | website | www.JD
它将全部归还给我4。
我如何编写查询以仅获取3个?
答案 0 :(得分:0)
如果您的表中有主键,请尝试在这里 id
two aggregates
答案 1 :(得分:0)
基本上,您需要寻找无条目中field_title
中'website'
的用户。这可以通过NOT EXISTS
子句来实现:
SELECT *
FROM foo f1
WHERE NOT EXISTS (SELECT *
FROM foo f2
WHERE field_title = 'website' AND f1.userid = f2.userid)
输出:
userid field_title field_value
3 fname JD3
3 lname JD3
答案 2 :(得分:0)
假设您有一个名为user
的表,该表每行存储一个用户,您可以这样做:
SELECT u.id from user u
LEFT JOIN user_attributes ua
ON (u.id = ua.id AND ua.field_title='website')
WHERE ua.field_title IS NULL
由于LEFT JOIN
保证每个用户至少有noe行,无论ON
子句是否匹配,而ON
子句与您不需要的东西匹配,然后有一个WHERE
子句,其中通常不是NULL
的一个字段被过滤为NULL
,将与用户3
返回一行。