[英]MySQL Limiting a query to one consistent value
我当前的查询返回一个表,如:
+------------+
value1 | ....
value1 | ....
value2 | ....
value3 | ....
+------------+
我想要:
+------------+
value1 | ....
value1 | ....
+------------+
我只想接收具有第一个值的所有行。 通常,如果知道该值,我将执行WHERE子句,并且由于每个值具有不同的行数,因此无法使用LIMIT。
现在我的查询看起来像:
SELECT u.*, n.something, w.*
FROM ... AS u, ... AS n, ... AS w
WHERE u.id = n.id
AND w.val = n.val
AND u.desc LIKE '%GET REQUEST VARIABLE%'
这很好用,除非我得到太多的行,并且使用PHP来做这破坏了代码的可移植性并且是多余的。
不确定,但我认为您可以通过以下方式获得它:
SELECT u.*, n.something, w.*
FROM ... AS u
JOIN ... AS n ON u.id = n.id
JOIN ... AS w ON w.val = n.val
JOIN (
SELECT col
FROM ... AS u2
WHERE u2.desc LIKE ?
LIMIT 1
) AS u2 ON u2.col = u.col
其中...
在内部SELECT
是化名为同桌u
之前。
编辑:还有一件事:我认为col
对于不同的desc
值是不同的; 如果不是,则还必须在外部SELECT
重复WHERE
。
(如果您不熟悉准备好的语句, ?
就是您的'%...%'
所在的位置...,并且别忘了在Bobby Tables中对它进行转义;当然,如果您愿意,该库将它给你:))
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.