选择适当的行 - 或获取默认行

时间:2015-04-20 12:09:21

标签: php mysql

我不知道是因为我是初学者还是因为我希望与SQL查询过于匹配,或者即使数据根本没有意义。

问题是: 我有优先级,即如果已知位置(在这种情况下= 225)仅显示225的行,并且如果已知除法仅显示225 | 5行。我只想要-1个作为默认值。

例如

如果location=202division=6获得-1|-1

如果location=225division=6获得225|-1

如果location=202division=3获得-1|3

如果location=225division=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 ║
╚══════════╩══════════╝

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只会返回第一行。