mysql,当您在一组数据中水平存储数据时如何找到唯一行

标签 mysql

我正在将数据存储在用户个人资料中

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/

相关文章:

PHP 删除不起作用并显示结果表

c# - mysql .net 连接器抛出 "Illegal characters in path"

php - Laravel 5.4 中按用户计数记录

mysql - 如何在 MySQL 中创建递归存储过程?

mysql - 在 Rails 中更新计数器,这是否存在并发问题?

mysql - MySQL 查询结果中不需要的 NULL 值

python dbf 到 mysql

MySql - 如果不存在则创建表否则截断?

mysql - 如何进行正确的内连接?

php - 来自数据库的图表