我不知道是因为我是初学者还是因为我期望从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 ║
╚══════════╩══════════╝

最佳答案

尝试同时添加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仅返回第一行。

关于php - 选择适当的行-或获取默认行,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/29747509/

10-09 17:28