मैं अपनी तालिका में प्रेषक और रिसीवर के बीच नवीनतम निर्माण तिथि प्राप्त करना चाहता हूं जहां प्रेषक या रिसीवर = 002 और फिर प्रेषक और रिसीवर द्वारा समूह। अंत में यह सूचित करें कि सदस्य 002 के दृश्य से प्रेषक या रिसीवर है या नहीं।MYSQL अधिकतम दिनांक समूह दो कॉलम
यह सिर्फ एक नमूना डेटा है।
तालिका
id sender | receiver | create_date
1 001 002 2015-10-13 10:30:01
2 003 002 2015-11-06 15:30:59
3 001 002 2015-11-02 05:30:01
4 001 002 2015-11-03 11:08:22
5 002 004 2015-10-20 12:15:36
6 002 004 2015-11-03 17:35:10
7 002 005 2015-09-01 06:02:20
8 002 001 2015-11-06 15:10:32
परिणाम इस
id | member | type | create_date
2 003 sender 2015-11-06 15:30:59
6 004 receiver 2015-11-03 17:35:10
7 005 receiver 2015-09-01 06:02:20
8 001 receiver 2015-11-06 15:10:32
अब तक मैं कोशिश की है की तरह दिखना चाहिए:
1)
SELECT
id,
IF(sender <> '002', sender, receiver) AS member,
IF(sender <> '002', 'sender', 'receiver') AS type,
MAX(create_date) AS max_date
FROM
table
WHERE
sender = '002' OR receiver = '002'
GROUP BY
member
परिणामस्वरूप मुझे अंत में मिला।
id | member | type | create_date
1 001 sender 2015-11-06 15:10:32
2 003 sender 2015-11-06 15:30:59
5 004 receiver 2015-11-03 17:35:10
7 005 receiver 2015-09-01 06:02:20
मैं नवीनतम वर्तमान पंक्ति प्राप्त करने के लिए संघर्ष करता हूं लेकिन create_date के साथ कोई समस्या नहीं है।
2) मैंने आंतरिक भी शामिल होने का प्रयास किया है।
SELECT
*
FROM
table a
INNER JOIN
(
SELECT
id,
MAX(create_date) as max_date
FROM
table
WHERE
sender = '002' OR receiver = '002'
) b ON b.max_date = a.create_date
यह केवल नवीनतम पंक्ति रिकॉर्ड को पुनर्प्राप्त करने के लिए अच्छी तरह से काम करता है। लेकिन अगर मुझे नवीनतम create_date के साथ पंक्तियों को पुनर्प्राप्त करने की आवश्यकता है लेकिन प्रेषक और रिसीवर द्वारा समूह?
अगर आप की जरूरत नहीं है जाने का रास्ता है 'id'। – vhu
@vhu सच, मुझे याद आया। यदि आप आईडी चाहते हैं तो आपको इसमें शामिल होना होगा। यदि आईडी निर्माण तिथि के समान क्रम में है, तो आप अधिकतम (आईडी) भी ले सकते हैं – AdrianBR