รับบันทึกสูงสุด n รายการสำหรับผลลัพธ์แต่ละกลุ่ม


140

ต่อไปนี้เป็นตัวอย่างที่ง่ายที่สุดที่เป็นไปได้แม้ว่าวิธีการแก้ปัญหาใด ๆ ควรจะสามารถปรับให้ได้ตามต้องการ แต่จะต้องใช้ผลลัพธ์ที่มีจำนวนมากที่สุด n:

จากตารางด้านล่างด้วยคอลัมน์บุคคลกลุ่มและอายุคุณจะได้ 2 คนที่เก่าแก่ที่สุดในแต่ละกลุ่มอย่างไร (ความสัมพันธ์ภายในกลุ่มไม่ควรให้ผลลัพธ์มากขึ้น แต่ให้ 2 อันดับแรกตามลำดับตัวอักษร)

+ -------- + ------- + ----- +
| คน | กลุ่ม | อายุ |
+ -------- + ------- + ----- +
| Bob | 1 | 32 |
| จิล 1 | 34 |
| ชอว์น 1 | 42 |
| เจค | 2 | 29 |
| พอล 2 | 36 |
| ลอร่า 2 | 39 |
+ -------- + ------- + ----- +

ชุดผลลัพธ์ที่ต้องการ:

+ -------- + ------- + ----- +
| ชอว์น 1 | 42 |
| จิล 1 | 34 |
| ลอร่า 2 | 39 |
| พอล 2 | 36 |
+ -------- + ------- + ----- +

หมายเหตุ:คำถามนี้สร้างขึ้นก่อนหน้านี้- รับการบันทึกด้วยค่าสูงสุดสำหรับแต่ละกลุ่มของผลลัพธ์ SQL ที่จัดกลุ่ม - สำหรับการรับแถวบนสุดเดียวจากแต่ละกลุ่มและที่ได้รับคำตอบเฉพาะ MySQL ที่ยอดเยี่ยมจาก @Bohemian:

select * 
from (select * from mytable order by `Group`, Age desc, Person) x
group by `Group`

ชอบที่จะสามารถสร้างสิ่งนี้ได้แม้ว่าฉันจะไม่เห็นวิธีก็ตาม



2
ตรวจสอบตัวอย่างนี้ มันค่อนข้างใกล้เคียงกับสิ่งที่คุณถาม: stackoverflow.com/questions/1537606/…
Savas Vedova

ใช้ LIMIT ภายใน GROUP BY เพื่อรับผลลัพธ์ N รายการต่อกลุ่มหรือไม่ stackoverflow.com/questions/2129693/…
Edye Chan

คำตอบ:


88

นี่เป็นวิธีหนึ่งในการทำเช่นนี้โดยใช้UNION ALL(ดูซอ Fiddle พร้อมการสาธิต ) สิ่งนี้ใช้ได้กับสองกลุ่มหากคุณมีมากกว่าสองกลุ่มคุณจะต้องระบุgroupหมายเลขและเพิ่มข้อความค้นหาสำหรับแต่ละรายการgroup:

(
  select *
  from mytable 
  where `group` = 1
  order by age desc
  LIMIT 2
)
UNION ALL
(
  select *
  from mytable 
  where `group` = 2
  order by age desc
  LIMIT 2
)

มีหลายวิธีในการทำเช่นนี้ดูบทความนี้เพื่อกำหนดเส้นทางที่ดีที่สุดสำหรับสถานการณ์ของคุณ:

http://www.xaprb.com/blog/2006/12/07/how-to-select-the-firstleastmax-row-per-group-in-sql/

แก้ไข:

สิ่งนี้อาจใช้ได้กับคุณเช่นกันมันสร้างหมายเลขแถวสำหรับแต่ละระเบียน การใช้ตัวอย่างจากลิงค์ด้านบนนี้จะส่งกลับเฉพาะระเบียนที่มีหมายเลขแถวน้อยกว่าหรือเท่ากับ 2:

select person, `group`, age
from 
(
   select person, `group`, age,
      (@num:=if(@group = `group`, @num +1, if(@group := `group`, 1, 1))) row_number 
  from test t
  CROSS JOIN (select @num:=0, @group:=null) c
  order by `Group`, Age desc, person
) as x 
where x.row_number <= 2;

ดูการสาธิต


52
ถ้าเขามีมากกว่า 1,000 กลุ่มจะไม่ทำให้เรื่องนี้น่ากลัวสักหน่อย
Charles Forest

1
@CharlesForest ใช่แล้วและนั่นคือเหตุผลที่ฉันระบุว่าคุณจะต้องระบุมากกว่าสองกลุ่ม มันจะกลายเป็นน่าเกลียด
Taryn

1
@CharlesForest ฉันคิดว่าฉันพบทางออกที่ดีกว่าดูการแก้ไขของฉัน
Taryn

1
หมายเหตุสำหรับทุกคนที่อ่านข้อความนี้: เวอร์ชันเป็นตัวแปรใกล้เคียงกับความถูกต้อง อย่างไรก็ตาม MySQL ไม่รับประกันลำดับของการประเมินผลของนิพจน์ในSELECT(และในความเป็นจริงแล้วบางครั้งก็ประเมินว่ามันไม่เหมาะสม) กุญแจสำคัญในการแก้ปัญหาคือการกำหนดตัวแปรทั้งหมดในการแสดงออกเดียว; นี่คือตัวอย่าง: stackoverflow.com/questions/38535020/...
Gordon Linoff

1
@GordonLinoff อัพเดทคำตอบของฉันขอบคุณที่ชี้ให้เห็น มันใช้เวลานานเกินไปสำหรับฉันที่จะอัปเดต
Taryn

63

ในฐานข้อมูลอื่น ๆ ROW_NUMBERที่คุณสามารถทำได้โดยใช้ MySQL ไม่รองรับROW_NUMBERแต่คุณสามารถใช้ตัวแปรเพื่อเลียนแบบ:

SELECT
    person,
    groupname,
    age
FROM
(
    SELECT
        person,
        groupname,
        age,
        @rn := IF(@prev = groupname, @rn + 1, 1) AS rn,
        @prev := groupname
    FROM mytable
    JOIN (SELECT @prev := NULL, @rn := 0) AS vars
    ORDER BY groupname, age DESC, person
) AS T1
WHERE rn <= 2

เห็นมันทำงานออนไลน์: sqlfiddle


แก้ไขฉันเพิ่งสังเกตเห็นว่า Bluefeet โพสต์คำตอบที่คล้ายกันมาก: +1 กับเขา อย่างไรก็ตามคำตอบนี้มีข้อดีเล็กน้อยสองข้อ:

  1. มันเป็นแบบสอบถามเดียว ตัวแปรถูกเตรียมใช้งานภายในคำสั่ง SELECT
  2. มันจัดการความสัมพันธ์ตามที่อธิบายไว้ในคำถาม (เรียงตามตัวอักษรตามชื่อ)

ดังนั้นฉันจะปล่อยไว้ที่นี่ในกรณีที่สามารถช่วยใครบางคน


1
Mark- นี่ใช้งานได้ดีสำหรับเรา ขอบคุณที่ให้ทางเลือกที่ดีอีกทางเพื่อชม @ bluefeet ชื่นชมมาก
Yarin

+1 สิ่งนี้ใช้ได้สำหรับฉัน สะอาดจริงๆและตรงประเด็นตอบ คุณช่วยอธิบายได้มั้ย เหตุผลเบื้องหลังนี้คืออะไร?
Aditya Hajare

3
วิธีแก้ปัญหาที่ดี แต่ดูเหมือนว่ามันไม่ได้ทำงานในสภาพแวดล้อมของฉัน (MySQL 5.6) เพราะคำสั่งตามคำสั่งจะถูกนำไปใช้หลังจากการเลือกดังนั้นจึงไม่ส่งกลับผลลัพธ์ยอดนิยมให้ดูทางเลือกอื่นของฉันเพื่อแก้ไขปัญหานี้
Laurent PELE

ในขณะที่ใช้สิ่งนี้ฉันสามารถลบJOIN (SELECT @prev := NULL, @rn := 0) AS varsได้ ฉันได้รับความคิดคือการประกาศตัวแปรที่ว่างเปล่า แต่ดูเหมือนว่าไม่เกี่ยวข้องกับ MySql
โจเซฟโช

1
มันใช้งานได้ดีสำหรับฉันใน MySQL 5.7 แต่มันจะยอดเยี่ยมถ้ามีคนอธิบายได้ว่ามันทำงานอย่างไร
George B

41

ลองสิ่งนี้:

SELECT a.person, a.group, a.age FROM person AS a WHERE 
(SELECT COUNT(*) FROM person AS b 
WHERE b.group = a.group AND b.age >= a.age) <= 2 
ORDER BY a.group ASC, a.age DESC

การสาธิต


6
Snuffin ออกมาจากที่ไหนเลยด้วยวิธีที่ง่ายที่สุด! สิ่งนี้สวยงามกว่า Ludo's / Bill Karwinหรือไม่? ฉันขอคำอธิบายได้
ไหม

อืมไม่แน่ใจว่ามันดูสง่างามกว่านี้หรือไม่ แต่การตัดสินจากคะแนนฉันเดาว่า Bluefeet อาจมีทางออกที่ดีกว่า
Snuffn

2
มีปัญหากับสิ่งนี้ หากมีการเสมอกันสำหรับตำแหน่งที่สองภายในกลุ่มผลลัพธ์เดียวเท่านั้นที่จะถูกส่งกลับ ดูตัวอย่างการ
Yarin

2
มันไม่ใช่ปัญหาหากต้องการ a.personคุณสามารถตั้งค่าคำสั่งของ
Alberto Leal

ไม่มันไม่ทำงานในกรณีของฉันไม่ทำงาน DEMO
Choix

31

วิธีการใช้การเข้าร่วมด้วยตนเอง:

CREATE TABLE mytable (person, groupname, age);
INSERT INTO mytable VALUES('Bob',1,32);
INSERT INTO mytable VALUES('Jill',1,34);
INSERT INTO mytable VALUES('Shawn',1,42);
INSERT INTO mytable VALUES('Jake',2,29);
INSERT INTO mytable VALUES('Paul',2,36);
INSERT INTO mytable VALUES('Laura',2,39);

SELECT a.* FROM mytable AS a
  LEFT JOIN mytable AS a2 
    ON a.groupname = a2.groupname AND a.age <= a2.age
GROUP BY a.person
HAVING COUNT(*) <= 2
ORDER BY a.groupname, a.age DESC;

ให้ฉัน:

a.person    a.groupname  a.age     
----------  -----------  ----------
Shawn       1            42        
Jill        1            34        
Laura       2            39        
Paul        2            36      

ฉันได้รับแรงบันดาลใจอย่างมากจากคำตอบของ Bill Karwin เพื่อเลือก 10 อันดับแรกสำหรับแต่ละประเภท

นอกจากนี้ฉันใช้ SQLite แต่ควรทำงานกับ MySQL

อีกอย่าง: ข้างบนฉันแทนที่groupคอลัมน์ด้วยgroupnameคอลัมน์เพื่อความสะดวก

แก้ไข :

การติดตามความคิดเห็นของ OP เกี่ยวกับผลการเสมอกันฉันเพิ่มคำตอบของ Snuffin เพื่อแสดงความสัมพันธ์ทั้งหมด ซึ่งหมายความว่าหากคนสุดท้ายเป็นเน็คไทสามารถส่งคืนได้มากกว่า 2 แถวดังแสดงด้านล่าง:

.headers on
.mode column

CREATE TABLE foo (person, groupname, age);
INSERT INTO foo VALUES('Paul',2,36);
INSERT INTO foo VALUES('Laura',2,39);
INSERT INTO foo VALUES('Joe',2,36);
INSERT INTO foo VALUES('Bob',1,32);
INSERT INTO foo VALUES('Jill',1,34);
INSERT INTO foo VALUES('Shawn',1,42);
INSERT INTO foo VALUES('Jake',2,29);
INSERT INTO foo VALUES('James',2,15);
INSERT INTO foo VALUES('Fred',1,12);
INSERT INTO foo VALUES('Chuck',3,112);


SELECT a.person, a.groupname, a.age 
FROM foo AS a 
WHERE a.age >= (SELECT MIN(b.age)
                FROM foo AS b 
                WHERE (SELECT COUNT(*)
                       FROM foo AS c
                       WHERE c.groupname = b.groupname AND c.age >= b.age) <= 2
                GROUP BY b.groupname)
ORDER BY a.groupname ASC, a.age DESC;

ให้ฉัน:

person      groupname   age       
----------  ----------  ----------
Shawn       1           42        
Jill        1           34        
Laura       2           39        
Paul        2           36        
Joe         2           36        
Chuck       3           112      

@ Ludo- เพิ่งเห็นคำตอบจาก Bill Karwin - ขอบคุณที่สมัครที่นี่
Yarin

คุณคิดอย่างไรกับคำตอบของ Snuffin ฉันพยายามจะเปรียบเทียบทั้งสอง
Yarin

2
มีปัญหากับสิ่งนี้ หากมีเน็คไทสำหรับตำแหน่งที่สองภายในกลุ่มจะมีการส่งคืนผลลัพธ์เดียวเท่านั้น
Yarin

1
@ Ludo - ข้อกำหนดเดิมคือแต่ละกลุ่มส่งคืนผลลัพธ์ที่แน่นอนโดยมีความสัมพันธ์ใด ๆ ที่ได้รับการแก้ไขตามลำดับตัวอักษร
Yarin

การแก้ไขเพื่อรวมความสัมพันธ์ไม่ได้ผลสำหรับฉัน ฉันได้รับสันนิษฐานว่าเพราะERROR 1242 (21000): Subquery returns more than 1 row GROUP BYเมื่อฉันเรียกใช้SELECT MINเคียวรีย่อยโดยลำพังมันจะสร้างสามแถว: 34, 39, 112และมีค่าที่สองควรเป็น 36 ไม่ใช่ 39
verbamour

12

ดูเหมือนว่าโซลูชัน Snuffin จะทำงานช้าเมื่อคุณมีจำนวนมากและโซลูชัน Mark Byers / Rick James และ Bluefeet ไม่ทำงานในสภาพแวดล้อมของฉัน (MySQL 5.6) เพราะการเรียงลำดับโดยจะถูกนำไปใช้หลังจากการดำเนินการเลือกดังนั้นนี่คือตัวแปร แก้ไขปัญหาของ Marc Byers / Rick James เพื่อแก้ไขปัญหานี้ (ด้วยการเลือกพิเศษที่ imbricated):

select person, groupname, age
from
(
    select person, groupname, age,
    (@rn:=if(@prev = groupname, @rn +1, 1)) as rownumb,
    @prev:= groupname 
    from 
    (
        select person, groupname, age
        from persons 
        order by groupname ,  age desc, person
    )   as sortedlist
    JOIN (select @prev:=NULL, @rn :=0) as vars
) as groupedlist 
where rownumb<=2
order by groupname ,  age desc, person;

ฉันลองใช้คิวรีที่คล้ายกันบนโต๊ะที่มี 5 ล้านแถวและจะให้ผลลัพธ์ในเวลาน้อยกว่า 3 วินาที


3
นี่เป็นข้อความค้นหาเดียวที่ทำงานในสภาพแวดล้อมของฉัน ขอบคุณ!
herrherr

3
เพิ่มLIMIT 9999999ไปยังตารางมาใด ๆ ORDER BYกับ สิ่งนี้อาจป้องกันไม่ให้ORDER BYถูกละเว้น
Rick James

ฉันเรียกใช้แบบสอบถามที่คล้ายกันบนตารางที่มีแถวไม่กี่พันแถวและใช้เวลา 60 วินาทีในการส่งคืนผลลัพธ์เดียวดังนั้น ... ขอบคุณสำหรับการโพสต์มันเป็นการเริ่มต้นสำหรับฉัน (ETA: ลดลงเหลือ 5 วินาทีดี!)
Evan

10

ลองดู:

SELECT
  p.Person,
  p.`Group`,
  p.Age
FROM
  people p
  INNER JOIN
  (
    SELECT MAX(Age) AS Age, `Group` FROM people GROUP BY `Group`
    UNION
    SELECT MAX(p3.Age) AS Age, p3.`Group` FROM people p3 INNER JOIN (SELECT MAX(Age) AS Age, `Group` FROM people GROUP BY `Group`) p4 ON p3.Age < p4.Age AND p3.`Group` = p4.`Group` GROUP BY `Group`
  ) p2 ON p.Age = p2.Age AND p.`Group` = p2.`Group`
ORDER BY
  `Group`,
  Age DESC,
  Person;

ซอ Fiddle: http://sqlfiddle.com/#!2/cdbb6/15


5
ชายคนอื่น ๆ พบวิธีแก้ปัญหาที่ง่ายกว่านี้มาก ... ฉันเพิ่งใช้เวลา 15 นาทีในการทำสิ่งนี้และภูมิใจในตัวเองอย่างไม่น่าเชื่อที่มากับวิธีแก้ปัญหาที่ซับซ้อนเช่นนี้ ที่ดูด
Travesty3

ฉันต้องค้นหาหมายเลขเวอร์ชันภายในที่น้อยกว่า 1 ในปัจจุบัน - นี่ทำให้ฉันได้รับคำตอบในการทำเช่นนี้: max(internal_version - 1)- เครียดน้อยลง :)
Jamie Strauss

8

หากคำตอบอื่น ๆ ไม่เร็วพอให้ลองใช้รหัสนี้ :

SELECT
        province, n, city, population
    FROM
      ( SELECT  @prev := '', @n := 0 ) init
    JOIN
      ( SELECT  @n := if(province != @prev, 1, @n + 1) AS n,
                @prev := province,
                province, city, population
            FROM  Canada
            ORDER BY
                province   ASC,
                population DESC
      ) x
    WHERE  n <= 3
    ORDER BY  province, n;

เอาท์พุท:

+---------------------------+------+------------------+------------+
| province                  | n    | city             | population |
+---------------------------+------+------------------+------------+
| Alberta                   |    1 | Calgary          |     968475 |
| Alberta                   |    2 | Edmonton         |     822319 |
| Alberta                   |    3 | Red Deer         |      73595 |
| British Columbia          |    1 | Vancouver        |    1837970 |
| British Columbia          |    2 | Victoria         |     289625 |
| British Columbia          |    3 | Abbotsford       |     151685 |
| Manitoba                  |    1 | ...

ดูที่เว็บไซต์ของคุณ - ฉันจะหาแหล่งข้อมูลของประชากรของเมืองได้ที่ไหน TIA และ rgs
Vérace

maxmind.com/th/worldcities - ฉันพบว่ามีประโยชน์สำหรับการทดสอบกับการค้นหา lat / lng การสืบค้นการแบ่งพาร์ติชันและอื่น ๆ มันใหญ่พอที่จะน่าสนใจ แต่อ่านได้เพียงพอที่จะรับรู้คำตอบ เซตย่อยของแคนาดามีประโยชน์สำหรับคำถามประเภทนี้ (จังหวัดน้อยกว่าเมืองอื่น ๆ ในสหรัฐฯ)
ริคเจมส์

2

ฉันต้องการแบ่งปันสิ่งนี้เพราะฉันใช้เวลานานในการค้นหาวิธีที่ง่ายในการใช้สิ่งนี้ในโปรแกรม java ที่ฉันกำลังทำงานอยู่ นี่ไม่ได้ให้ผลลัพธ์ที่คุณต้องการ แต่ใกล้เคียงมาก ฟังก์ชั่นใน mysql นั้นGROUP_CONCAT()ทำงานได้ดีมากในการระบุจำนวนผลลัพธ์ที่จะส่งกลับในแต่ละกลุ่ม การใช้LIMITหรือวิธีอื่น ๆ ในการพยายามทำสิ่งนี้COUNTไม่ได้ผลสำหรับฉัน ดังนั้นหากคุณยินดีที่จะรับเอาท์พุทที่ถูกดัดแปลงมันเป็นทางออกที่ดี ให้บอกว่าฉันมีตารางที่เรียกว่า 'นักเรียน' พร้อมรหัสนักศึกษาเพศของพวกเขาและเกรดเฉลี่ย ให้บอกว่าฉันต้องการ 5 gpas สูงสุดสำหรับแต่ละเพศ จากนั้นฉันสามารถเขียนแบบสอบถามเช่นนี้

SELECT sex, SUBSTRING_INDEX(GROUP_CONCAT(cast(gpa AS char ) ORDER BY gpa desc), ',',5) 
AS subcategories FROM student GROUP BY sex;

โปรดทราบว่าพารามิเตอร์ '5' บอกจำนวนรายการที่จะต่อกันในแต่ละแถว

และเอาท์พุทจะมีลักษณะเหมือน

+--------+----------------+
| Male   | 4,4,4,4,3.9    |
| Female | 4,4,3.9,3.9,3.8|
+--------+----------------+

นอกจากนี้คุณยังสามารถเปลี่ยนORDER BYตัวแปรและจัดลำดับด้วยวิธีอื่นได้ ดังนั้นถ้าฉันมีอายุของนักเรียนฉันสามารถแทนที่ 'gpa desc' ด้วย 'age desc' และมันจะใช้ได้! คุณยังสามารถเพิ่มตัวแปรให้กับกลุ่มตามคำสั่งเพื่อรับคอลัมน์เพิ่มเติมในเอาต์พุต ดังนั้นนี่เป็นวิธีที่ฉันพบว่ามีความยืดหยุ่นและใช้งานได้ดีถ้าคุณโอเคกับการแสดงรายการผลลัพธ์


0

ใน SQL Server row_numer()เป็นฟังก์ชั่นที่ทรงพลังที่สามารถรับผลลัพธ์ได้อย่างง่ายดายดังนี้

select Person,[group],age
from
(
select * ,row_number() over(partition by [group] order by age desc) rn
from mytable
) t
where rn <= 2

ด้วย 8.0 และ 10.2 เป็น GA คำตอบนี้จึงสมเหตุสมผล
Rick James

@RickJames 'การเป็น GA' หมายถึงอะไร ฟังก์ชั่นหน้าต่าง ( dev.mysql.com/doc/refman/8.0/en/window-functions.html ) แก้ปัญหาของฉันได้เป็นอย่างดี
iedmrc

1
@iedmrc - "GA" หมายถึง "พร้อมใช้งานทั่วไป" เป็นเทคโนโลยีที่พูดสำหรับ "พร้อมสำหรับเวลาที่สำคัญ" หรือ "เปิดตัว" พวกเขากำลังพัฒนาเวอร์ชั่นและจะมุ่งเน้นไปที่ข้อผิดพลาดที่พวกเขาพลาด ลิงก์ดังกล่าวกล่าวถึงการใช้งานของ MySQL 8.0 ซึ่งอาจแตกต่างจากการใช้งานของ MariaDB 10.2
Rick James

-1

มีคำตอบที่ดีจริงๆสำหรับปัญหานี้ที่MySQL - วิธีการได้รับแถวที่ไม่ได้รับมากที่สุดในแต่ละกลุ่ม

ขึ้นอยู่กับโซลูชันในลิงค์อ้างอิงแบบสอบถามของคุณจะเป็น:

SELECT Person, Group, Age
   FROM
     (SELECT Person, Group, Age, 
                  @group_rank := IF(@group = Group, @group_rank + 1, 1) AS group_rank,
                  @current_group := Group 
       FROM `your_table`
       ORDER BY Group, Age DESC
     ) ranked
   WHERE group_rank <= `n`
   ORDER BY Group, Age DESC;

ที่nเป็นtop nและyour_tableเป็นชื่อของตารางของคุณ

ฉันคิดว่าคำอธิบายในเอกสารอ้างอิงมีความชัดเจนจริงๆ สำหรับการอ้างอิงอย่างรวดเร็วฉันจะคัดลอกและวางที่นี่:

ปัจจุบัน MySQL ไม่รองรับ ROW_NUMBER () ฟังก์ชั่นที่สามารถกำหนดหมายเลขลำดับภายในกลุ่ม แต่เป็นวิธีแก้ปัญหาเราสามารถใช้ตัวแปรเซสชัน MySQL

ตัวแปรเหล่านี้ไม่ต้องการการประกาศและสามารถใช้ในแบบสอบถามเพื่อทำการคำนวณและเพื่อเก็บผลลัพธ์ระดับกลาง

@current_country: = country รหัสนี้จะถูกดำเนินการสำหรับแต่ละแถวและเก็บค่าของคอลัมน์ประเทศเป็นตัวแปร @current_country

@country_rank: = IF (@current_country = country, @country_rank + 1, 1) ในรหัสนี้หาก @current_country เหมือนกันเราเพิ่มอันดับมิฉะนั้นให้ตั้งเป็น 1 สำหรับแถวแรก @current_country เป็น NULL ดังนั้นอันดับคือ ตั้งเป็น 1 ด้วย

สำหรับการจัดอันดับที่ถูกต้องเราจำเป็นต้องมี ORDER BY ประเทศประชากร DESC


มันเป็นหลักการที่ใช้โดยวิธีแก้ปัญหาของ Marc Byers, Rick James และของฉัน
Laurent PELE

ยากที่จะบอกว่าโพสต์ใด (Stack Overflow หรือ SQLlines) เป็นรายการแรก
Laurent PELE

@ LaurentPELE - โพสต์ของฉันถูกโพสต์เมื่อกุมภาพันธ์ 2558 ฉันไม่เห็นเวลาหรือชื่อบน SQLlines บล็อก MySQL มีมานานพอที่บางอันล้าสมัยแล้วและควรถูกลบออก - ผู้คนกำลังอ้างถึงข้อมูลที่ผิด ๆ
Rick James
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.