php - MySQL,检查结果是否有值(value),如果没有则取另一个

标签 php mysql sql subquery

<分区>

我有一个这样的表结构:

Page_id  || type  ||  user_id
1            1           0
2            2           0
3            3           0
4            1           1
5            2           1
6            3           1

我想从这个表中获取 page_id 4,5 和 6。

但我也可以有这样的表格数据

Page_id  || type  ||  user_id
1            1           0
2            2           0
3            3           0
4            1           1
5            2           1

然后我想得到 page_id 4、5 和 3。

所以我必须获取所有类型,但优先级为 user_id,如果没有 user_id 为 1 的记录,则取 0 的记录

已经尝试了很多。我知道我可以用 PHP 对其进行排序,但我希望有一种方法可以使用 MySQL。

问候安德烈亚斯

////////回答///////// 我收到了很多建议,但我还没有全部尝试过,所以我无法判断它们的正确与否。但我接受了一个对我有用的答案。感谢大家。

最佳答案

SELECT a.Type, a.Page_ID
FROM   table a
         INNER JOIN
       (SELECT    Type, MAX(User_ID) AS User_ID
        FROM      table
        GROUP BY  Type ) b
       ON a.Type = b.Type AND a.User_ID = b.User_ID

关于php - MySQL,检查结果是否有值(value),如果没有则取另一个,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21862709/

相关文章:

mysql - LAST_INSERT_ID 在插入查询中返回 0

Mysql 查询错误 #1005 150

php - 一次查询查询 4 ​​个 MySQL 表

php - 如果记录不在 SQL 中,则创建一个选项

java - 为什么这个 REST 服务不起作用?

MySQL:将数据写入表和列

mysql - 如何以编程方式确定 MySQL 关系类型 (1 :1, 1 :n, n :m) between tables?

mysql - 使用 SELECT ... INSERT 加载数据库条目

php - 循环插入每周的时间表

php - zend - 从 Controller 连接到数据库