如何选择 MySQL 列中的所有行

Joh*_*ger 5 mysql

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

"SELECT * FROM whateverTable WHERE id='$id' AND date='$date' AND location='I don't care, return everything'"
Run Code Online (Sandbox Code Playgroud)

请记住,我需要在那里找到位置,因为我正在对该数据库进行动态 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'"
}
Run Code Online (Sandbox Code Playgroud)

我不是像那样修改我的代码(因为我的真实代码中有很多查询子句),而是尝试看看是否可以这样做:

"SELECT * FROM whateverTable WHERE id='$id' AND date='$date' AND location='%'"
Run Code Online (Sandbox Code Playgroud)

或这个:

"SELECT * FROM whateverTable WHERE id='$id' AND date='$date' AND location='.*'"
Run Code Online (Sandbox Code Playgroud)

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

Mar*_*ers 6

正如您在问题中所说,您应该动态构建查询并忽略该字段。那么查询将变为:

SELECT * FROM whateverTable
WHERE id = '$id'
AND date = '$date'
Run Code Online (Sandbox Code Playgroud)

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

SELECT * FROM whateverTable
WHERE id = '$id'
AND date = '$date'
AND (location='$location' OR '$location' = '')
Run Code Online (Sandbox Code Playgroud)

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

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