我不知道是因为我是初学者还是因为我希望与SQL查询过于匹配,或者即使数据根本没有意义。
问题是: 我有优先级,即如果已知位置(在这种情况下= 225)仅显示225的行,并且如果已知除法仅显示225 | 5行。我只想要-1个作为默认值。
例如
如果location=202
和division=6
获得-1|-1
如果location=225
和division=6
获得225|-1
如果location=202
和division=3
获得-1|3
如果location=225
和division=3
获得225|3
表格:
╔══════════╦══════════╗
║ location ║ division ║
╠══════════╬══════════╣
║ -1 ║ -1 ║
║ -1 ║ 3 ║
║ -1 ║ 5 ║
║ 225 ║ -1 ║
║ 225 ║ 3 ║
╚══════════╩══════════╝
查询:
SELECT * FROM n_comboitems
WHERE coit_item="PHOLOCOMBO2"
AND (coit_location = 225 OR coit_location = -1)
AND (coit_division = 5 OR coit_division = -1)
返回
╔══════════╦══════════╗
║ location ║ division ║
╠══════════╬══════════╣
║ -1 ║ -1 ║
║ -1 ║ 5 ║
║ 225 ║ -1 ║
╚══════════╩══════════╝
但我只想:
╔══════════╦══════════╗
║ location ║ division ║
╠══════════╬══════════╣
║ 225 ║ -1 ║
╚══════════╩══════════╝
答案 0 :(得分:3)
尝试添加order by
子句和limit
子句:
SELECT * FROM n_comboitems
WHERE coit_item="PHOLOCOMBO2"
AND (coit_location = 225 OR coit_location = -1)
AND (coit_division = 5 OR coit_division = -1)
ORDER BY coit_location DESC, coit_division DESC
LIMIT 1;
按降序排序会将-1推到底部,而LIMIT 1
只会返回第一行。