Adam’s hosting another T-SQL Tuesday, for which this post is jumping in. He’s themed it around T-SQL Puzzles, which I found quite interesting, because the world is full of them.
Most of the questions that I answer on forums, help sites, and so on, are puzzles. I guess there’s the difference between “Problem” and “Puzzle”, but I prefer to think of thing as puzzles.
For Adam’s meme though, I thought I’d share a Puzzle that I ask students who take my Advanced T-SQL course. The idea is to have them start thinking about what each component of T-SQL is actually doing, so that they can better address problems they face. If you have a rifle, it’s nice to actually know what the various components of it are for, so that you can use it more effectively.
I actually ask them a large number of things, but the one that I thought I’d pose for you all today is about the results of this. The answer will be in the next blog post, which hopefully you haven’t read yet. I will have them both published on Tuesday 12th, this one at the start of the day, and the answer towards the end of the day.
The question is simply a query. Can you predict the output, and explain why? Feel free to comment to your heart’s content, as I will moderate them and only publish them afterwards. In fact, I’ll probably take a few days to get to them (being holiday period), so I apologise if you’re wanting to read what other people thought too.
Naturally, you can check your answer by actually running the query, but please provide your thoughts before you do. The query is below. There is no FROM clause. There is no GROUP BY clause. Does it error, do you get an empty resultset, do you get a single row containing NULL, do you get a single row with data, do you get multiple rows, or something else I haven’t suggested? Enjoy.
SELECT ‘No rows’
WHERE 1=2
HAVING 1=1;
This Post Has 3 Comments
SELECT 1 + 1 will return 2, I have to assume that a column title ‘no column name’ will contain a single value ‘No rows’… but I dont think it will return anything as the where condition is never going to be satisfied.
… that was unexpected. And strangely enough this is related to Kalen Delaney’s T-SQL Tuesday entry here:
http://sqlblog.com/blogs/kalen_delaney/archive/2010/01/11/non-aggregated-columns-in-a-group-by-query.aspx
Michael,
I think Kalen’s is unexpected, but that mine just needs a good understanding of how HAVING works.
Make sure you read my explanation for it at http://msmvps.com/blogs/robfarley/archive/2010/01/12/t-sql-tuesday-having-puzzle-answer.aspx
Rob