如何选择MySQL列中的所有行

时间:2012-06-12 21:11:33

标签: mysql

这似乎是一个简单的问题,但我不能为我的生活找到答案。如何选择列中的所有行而不考虑值?例如,如果我想要列位置中的所有内容:

"SELECT * FROM whateverTable WHERE id='$id' AND date='$date' AND location='I don't care, return everything'"

请记住,我需要位置,因为我正在对此数据库进行动态URL查询,否则我会把它遗漏掉。

修改 的 我已经阅读了一些答案,并因为没有让自己更清楚而感到羞耻。我正在尝试查看MySQL查询是否可以选择列中的每一行而不需要:

if ($location == '') {
  "SELECT * FROM whateverTable WHERE id='$id' AND date='$date'"
} else {
  "SELECT * FROM whateverTable WHERE id='$id' AND date='$date' AND location='$location'"
}

而不是像我那样乱砍我的代码(因为我在我的真实代码中有很多更多的查询子句),我试图看看这样的东西是否可能:

"SELECT * FROM whateverTable WHERE id='$id' AND date='$date' AND location='%'"

或者这个:

"SELECT * FROM whateverTable WHERE id='$id' AND date='$date' AND location='.*'"

但我没有运气。如果不是,我会继续前进。很抱歉没有让自己更清楚

5 个答案:

答案 0 :(得分:3)

正如您在问题中所说,您应该动态构建查询并省略该字段。然后查询将成为:

SELECT * FROM whateverTable
WHERE id = '$id'
AND date = '$date'

如果由于某种原因你不能这样做,你可以尝试这样的事情:

SELECT * FROM whateverTable
WHERE id = '$id'
AND date = '$date'
AND (location='$location' OR '$location' = '')

$location设置为空字符串将导致返回所有位置。

并且不要忘记正确地逃避字符串以避免SQL注入攻击。

答案 1 :(得分:1)

SELECT location FROM whateverTable会返回位置列中的每一行/值。

如果要开始过滤结果,请添加where子句。

答案 2 :(得分:0)

如果您正在动态构建查询,只需检查location是否为null或空字符串,然后省略该部分查询。

答案 3 :(得分:0)

LIKE

替换等号:“=”
SELECT * FROM whateverTable WHERE id='$id' AND date='$date' AND location LIKE '%'

答案 4 :(得分:0)

我认为您正在寻找子查询?

SELECT * FROM whateverTable WHERE location IN (SELECT location FROM whateverTable);