问题: 如果我将LIMIT更改为IN语句中有多少结果,则此查询仅显示正确的答案。
目标: - 我希望我的变量(Car,Van,Bike,Bus)中的金额等于限额金额。
我的IN语句实际上是一个变量,可以有1-50个项目(卡车,出租车等),但是为了方便我使用了4.如果它有3个项目,我必须将LIMIT更改为3并且等等。
我可以进行查询,然后爆炸到数组,并计算项目使用此数字作为变量添加到限制,但这是2个查询!
易于阅读的查询: -
$result = mysql_query("SELECT total FROM table1 WHERE client='$client'
and campaign IN ('Car', 'Van', 'Bike', 'Bus') ORDER BY id DESC limit 4");
汽车,货车,自行车和公共汽车来自数据库查询......
$result = mysql_query("SELECT rules FROM combined WHERE groupname='$groupname'");
这产生了'Car','Van','Bike','Bus'
模拟数据: - 车= 1, 范= 2, 自行车= 3, 巴士= 4。
此查询的答案是1 + 2 + 3 + 4 但是,如果我有一个规则,其中在竞选活动中有5个部分它将是相同的,因为它只获取4个答案而不是5个。 所以它仍然只增加1 + 2 + 3 + 4,因为限制是4而不是现在5。
粗体部分实际上存储在数据库中,并添加了斜杠。 $ rule = 'Car','Van','Bike','Bus';
真正的mysql语句如下: -
$result = mysql_query("SELECT total FROM table1 WHERE client='$client'
and campaign IN ($rule) ORDER BY id DESC limit 4");
=============================================== ======================== 解释
以下查询获取此数据('Car','Van','Bike','Bus')
$result = mysql_query("SELECT rules FROM combined WHERE groupname='$groupname'");
我把它放在一个名为$ rule
的变量中然后我运行此查询
$result = mysql_query("SELECT total FROM table1 WHERE client='$client'
and campaign IN ($rule) ORDER BY id DESC limit 4");
这将为每个返回一个数字(Car = 1的总数,Van = 2的总数)
问题是,当我的$规则中超过4时,由于限制,它不会返回超过4。我每次都要改变它。
我可以将两个查询结合起来....并获得每个Car,Van,Bike活动的最高ID。 (出现在我的IN语句或$ rule中)
希望这更清楚。
答案 0 :(得分:0)
我不确定这是否真的是你所需要的,但它解释了我对这个问题的解释:
SELECT total
FROM table1
JOIN (
SELECT MAX(id) as id
FROM table1
WHERE campaign IN ('Car', 'Van', 'Bike', 'Bus')
GROUP BY campaign
) t ON t.id = table1.id