我正在将数据存储在用户个人资料中
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
正如您从上面的示例中看到的,我正在水平存储数据。
因此,用户 ID 1,2 和 4 有网站。但是,用户 ID 3 没有网站。
现在,当我编写查询时。比如说,表名是 foo
select * from foo where title!="website"
它将返回全部 4 个。
如何编写查询以仅获取 3?
最佳答案
基本上,您需要查找没有条目的 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
关于mysql,当您在一组数据中水平存储数据时如何找到唯一行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52234394/