即使没有足够的数据也如何始终返回3行

时间:2020-03-05 12:54:17

标签: mysql database mariadb

是否可以总是返回3行?即使没有数据?

所以我有两个表,我总是需要返回3行,这样我就不必担心创建逻辑,如果我可以仅通过查询执行此操作,那么我就可以节省时间。

用户表

|user_id| name | status|
1         bob      1
2         alice    1
3         maria    0

转移表

id| user_id|transfer_name|
1      1        test1
2      1        test1
3      1        test1
4      1        test1
5      1        test1
6      1        test1
7      2        test1
8      2        test1
9      2        test1
10     2        test1

这是我当前的查询

SELECT superstar.user_id,superstar.name,superstar.ranking FROM (
  SELECT transfer.user_id,user.name,COUNT(transfer.transfer_name) AS ranking 
  FROM transfer AS transfer
  LEFT JOIN users AS user ON user.id = transfer.user_id 
  GROUP BY transfer.user_id
  UNION SELECT 'N/A'
) AS superstar
LIMIT 3;

如果只有两行怎么办?我仍然想返回3行。我尝试使用UNION,但出现了The used SELECT statements have a different number of columns错误 而且我觉得我做错了。任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:0)

尝试一下

SELECT superstar.user_id,superstar.name,superstar.ranking FROM (
    SELECT transfer.user_id,user.name,COUNT(transfer.transfer_name) AS ranking 
    FROM transfer AS transfer
    LEFT JOIN users AS user ON user.id = transfer.user_id 
    GROUP BY transfer.user_id
    UNION ALL 
    SELECT 'N/A', 'N/A', 0
    UNION ALL
    SELECT 'N/A', 'N/A', 0
    UNION ALL 
    SELECT 'N/A', 'N/A', 0
) AS superstar
LIMIT 3;