簡體   English   中英

查詢SELECT語句的列數不同

[英]query SELECT statements have a different number of columns

我得到以下代碼:

使用的SELECT語句的列數不同。 我仍然從該站點搜索解決方案,但是在查詢中找不到問題所在。 任何人都可以在這里為我提供幫助,為什么我得到= “使用的SELECT語句的列數不同” ,我該如何解決?

SELECT DISTINCT 
            M.msg_id, 
            M.uid_fk, 
            M.message,
            S.created, 
            M.share_count, 
            U.username,
            U.last_login,
            M.uploads, 
            S.uid_fk AS 
            share_uid,
            S.ouid_fk AS share_ouid FROM 
            messages M, 
            users U, 
            friends F,
            message_share S 
            WHERE 
            F.friend_one='$uid' AND 
            U.uid = F.friend_one AND
            U.status='1' AND 
            F.friend_two != S.ouid_fk AND 
            M.uid_fk = S.ouid_fk AND F.role='fri' AND 
            S.msg_id_fk = M.msg_id group by msg_id)
            UNION
            (SELECT DISTINCT 
            M.msg_id, 
            M.uid_fk, 
            M.message,
            M.share_count,
            U.username,
            U.last_login,
            M.uploads, '0' AS share_uid, '0' AS share_ouid 
            FROM messages M, users U, friends F WHERE F.friend_one='$uid' AND U.status='1' AND M.uid_fk=U.uid AND M.uid_fk = F.friend_two GROUP by msg_id ) ORDER BY created DESC

這是因為您正在執行UNION ,在這種情況下, SELECT兩個部分都應包含完全相同的列數,這對您的方案不滿意。 您的第一個SELECT部分包含10個選定的列,而第二個SELECT語句僅包含9個列,因此出現錯誤。

SELECT DISTINCT 
            M.msg_id, 
            M.uid_fk, 
            M.message,
            S.created, 
            M.share_count, 
            U.username,
            U.last_login,
            M.uploads, 
            S.uid_fk AS 
            share_uid,
            S.ouid_fk AS share_ouid 
            FROM 
            messages M, 
            users U, 
            .........
            UNION
            (SELECT DISTINCT 
            M.msg_id, 
            M.uid_fk, 
            M.message,
            NOW() as created //Add some default value
            M.share_count,
            U.username,
            U.last_login,
            M.uploads, 
            '0' AS share_uid, 
            '0' AS share_ouid 

兩個SELECT語句必須包含相同的列數(第二個SELECT語句中缺少創建的列數):

SELECT DISTINCT 
            M.msg_id, 
            M.uid_fk, 
            M.message,
            S.created, 
            M.share_count, 
            U.username,
            U.last_login,
            M.uploads, 
            S.uid_fk AS 
            share_uid,
            S.ouid_fk AS share_ouid
 FROM messages M, users U, friends F, message_share S 
 WHERE F.friend_one='$uid'
 AND U.uid = F.friend_one
 AND U.status='1'
 AND F.friend_two != S.ouid_fk
 AND M.uid_fk = S.ouid_fk
 AND F.role='fri'
 AND S.msg_id_fk = M.msg_id
 GROUP BY msg_id

UNION

SELECT DISTINCT 
            M.msg_id, 
            M.uid_fk, 
            M.message,
            '0000-00-00' as created
            M.share_count,
            U.username,
            U.last_login,
            M.uploads,
            '0' AS share_uid,
            '0' AS share_ouid 
 FROM messages M, users U, friends F
 WHERE F.friend_one='$uid'
 AND U.status='1'
 AND M.uid_fk=U.uid
 AND M.uid_fk = F.friend_two
 GROUP BY msg_id

 ORDER BY created DESC

暫無
暫無

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

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