如何使用特定值的订单

use*_*187 6 mysql sql

CREATE TABLE Countries(location varchar(255), country varchar(255))

INSERT INTO Countries(location, country)
               VALUES('Arkansas', 'US'),
                      ('Newyork', 'US'),
                      ('New Jersey', 'US'),
                      ('Tokyo', 'JP'),
                      ('Yokohama', 'JP'),
                      ('Chennai', 'IN'),
                      ('Delhi', 'IN'),
                      ('Sydney', 'AU'),
                      ('Melbourne', 'AU');
Run Code Online (Sandbox Code Playgroud)

我需要查询以下输出

 Location     |         Country
--------------------------------
  Arkansas                US
  Tokyo                   JP
  Chennai                 IN
  Sydney                  AU
  Newyork                 US
  Yokohama                JP
  Delhi                   IN
  Melbourne               AU
  New Jersey              US 
Run Code Online (Sandbox Code Playgroud)

fth*_*lla 1

如果没有id. 您可以这样创建表:

CREATE TABLE Countries(
  id INT NOT NULL AUTO_INCREMENT,
  location varchar(255),
  country varchar(255),
  PRIMARY KEY(ID))
Run Code Online (Sandbox Code Playgroud)

然后你可以插入你的数据:

INSERT INTO Countries(location, country)
           VALUES('Arkansas', 'US'),
           ...
Run Code Online (Sandbox Code Playgroud)

然后我会使用标准 SQL 编写查询,如下所示:

SELECT *
FROM Countries c1
ORDER BY (select count(*)
          from countries c2
          where c1.country=c2.country
          and c1.id>c2.id), id
Run Code Online (Sandbox Code Playgroud)

这个查询可能不快,但它会起作用。但如果不使用 anid就无法回答你的问题。SQL 表没有默认顺序,因此如果没有默认顺序,则id无法判断,例如,悉尼排在墨尔本之前,即使它是先插入的。