0

再会!我对该查询有一些问题:

SELECT `id`
FROM `test`
WHERE `name`
LIKE "somename" AND `id` = (SELECT max(`id`) FROM test)

它返回一个空结果。

SELECT `id`
FROM `test`
WHERE `name` LIKE "somename"

作品。

而且,

SELECT `id`
FROM `test`
WHERE `id` = (SELECT max(`id`) FROM test)

也可以。

为什么他们不一起工作?

谢谢!

4

3 回答 3

3

我想你可能正在寻找这样的东西:

SELECT *
FROM
  test
WHERE
  id=(SELECT max(id) FROM test WHERE name LIKE "somename")

这将返回测试中具有最大 ID 的行,其中名称类似于“somename”

于 2014-03-17T12:10:03.903 回答
2

因为它们必须同时为真。

想象以下

id    name
1     'somename'
2     'someothername'

在上述情况下

SELECT `id`
FROM `test`
WHERE `name` LIKE "somename"

将返回第一行但是:

SELECT id FROM test WHERE id = (SELECT max(id) FROM test) 

将返回第二个。使用AND将意味着不返回任何结果。您可能希望OR根据您想要的行为来使用。

于 2014-03-17T12:11:59.220 回答
0

试试看:

  SELECT `id`
  FROM `test`
  WHERE id in (SELECT max(id) FROM test WHERE name LIKE '%somename%') 
于 2014-03-17T12:13:17.673 回答