簡體   English   中英

連接兩個不同的表,按公用值(熱度)排序

[英]Join two different tables ordered by common value (hotness)

我正在嘗試從兩個不相關的表格, showcasequestions要顯示在供稿中的結果。 它們應按公共列hotness (浮點值)排序。

SELECT s.id,s.date,s.title,s.views,s.image,s.hidpi,s.width,s.description,u.display_name,u.avatar
FROM showcase AS s
INNER JOIN users AS u ON s.user_id = u.id
UNION 
SELECT q.id,q.date,q.title,q.views,q.text,u.display_name,u.avatar,0,0,0
FROM questions AS q
INNER JOIN users AS u ON q.user_id = u.id
ORDER BY hotness DESC
LIMIT 10

我已經嘗試了UNION ,但是我不知道我應該如何在這里使用它並得到此錯誤unknown column hotness

您可以嘗試以下查詢:

SELECT r.* FROM (
    SELECT s.id,s.date,s.title,s.views,s.image,s.hidpi,s.width,s.description,u.display_name,u.avatar, s.hotness
    FROM showcase AS s
    INNER JOIN users AS u ON s.user_id = u.id
    UNION 
    SELECT q.id,q.date,q.title,q.views,q.text,u.display_name,u.avatar,0,0,0, q.hotness
    FROM questions AS q
    INNER JOIN users AS u ON q.user_id = u.id 
) as r
ORDER BY r.hotness DESC
LIMIT 10

您需要在子查詢中合並聯合結果以對結果應用Order by。 我還在select子句中添加了熱點,請檢查我從好表中獲取字段。

您需要選擇值,以便ORDER BY可以識別它:

SELECT s.id,s.date,s.title,s.views,s.image,s.hidpi,s.width,s.description,u.display_name,u.avatar, s.hotness
FROM showcase AS s
INNER JOIN users AS u ON s.user_id = u.id
UNION ALL
SELECT q.id,q.date,q.title,q.views,q.text,u.display_name,u.avatar,0,0,0, q.hotness
FROM questions AS q
INNER JOIN users AS u ON q.user_id = u.id
ORDER BY hotness DESC;

請注意,我還將UNION更改為UNION ALL 除非您打算刪除重復項,否則沒有理由進行額外的處理。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM