这似乎是一个简单的问题,但我不能为我的生活找到答案。如何选择列中的所有行而不考虑值?例如,如果我想要列位置中的所有内容:
"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='.*'"
但我没有运气。如果不是,我会继续前进。很抱歉没有让自己更清楚
答案 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);