mysql - SQL 默认国家、城市、城镇列表

标签 mysql sql sql-order-by

我想在我的管理面板中的每个数据库网格中引入默认国家默认城市默认城镇
这些不是下拉这些是数据库网格

我有三个表
国家/地区表 id(int),name(varchar),is_default 枚举('1','0')

城市表
id(int),country_id(int),name(varchar),is_default 枚举('1','0')

城镇表
id(int),countr_id(int),city_id(int),name(varchar),is_default 枚举('1','0')

我的管理面板中有 3 个链接
国家列表
城市列表
城镇列表

国家列表
- 当我打开国家/地区列表时,它会显示列表,但默认国家/地区将排在第一位

国家默认值
美国是(它排在第一行,因为它的 is_dfault=1)
德国 否

没关系
Select * from country where is_default='1'

城市列表
当我打开那个列表时

  • 城市列表将带有自己的县名,但默认国家/地区将出现在第一行
  • 默认城市将在城市列表页面的默认国家中排在第一位

    选择 city.*,country.name 作为国家
    在 country.id=city.id 上离开加入国家
    order by country.is_default,city.is_default asc
    那是我知道的错误 SQL
    例子
    城市名国家默认
    美国新泽西州 是的(这个城市排在第一行是因为它的 is_default=1)
    美国芝加哥没有
    koln 德国 否(德国城市在美国城市之后开始,因为国家/地区默认为 1)

城镇列表

  • is_default value 1 town will be first with own city towns at first line
    例子
    town name city name country default
    usa town newjersey USA 1(这个镇排在第一行,因为它的 is_default=1) 在美国城镇之后
    germany town1 koln GERMANY 0(德国或其他国家城市在美国城镇之后开始)

我认为我的问题是顺序(按 is_default 排序)或者我需要与其他选择不同的 sql
我尝试了一些代码,但国家混合在一起,其他城市和城镇也列出了
等待您的帮助。
谢谢

最佳答案

我不知道我是否明白你的意思,我试着给出一个答案。

我认为混合国家或其他列的是错误的连接条件。 你的 sql 在这里:

Select city.*,country.name as country 
    left join country on country.id=city.id
    order by country.is_default,city.is_default asc

上面是你发的,因为不完整,我猜你的加入条件“on country.id=city.id”是错误的。如果你想合并这两个表,你应该在它的 contry id 上

SELECT city.*, county.name AS country_name from 
     country LEFT JOIN city ON country.id = city.country_id
     ORDER BY country.is_default, city.is_default DESC

因为“is_default”为 1,所以我使用“DESC”,那么默认行将首先弹出。

希望对你有所帮助:)

关于mysql - SQL 默认国家、城市、城镇列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10213282/

相关文章:

mysql - Sql - 查询花费很长时间

mysql 优化 - 复制或序列化旧行

sql - 使用一组值 sql 更新多行

mysql - 按 asc 排序,但当值 0 位于 codeigniter 的最后时

c# - LINQ 中的 GroupBy 和 OrderBy

mysql - ORDER BY 货币值

mysql - 如何将多个 csv 文件导入 MySQL 数据库

对于相同查询,Python3 脚本未显示与 MySQL 引擎相同的结果

sql - 将自己的表添加到 CRM 2011 数据库

sql - MSSQL 查询 - 仅对正数求和